Problem:
Sie haben eine Tabelle mit Daten mit mehreren Dimensionen und möchten dies tun Erstellen Sie dynamisch eine Kreuztabelle (Pivot-Tabelle), ohne die Anzahl der Dimensionen im Voraus zu kennen.
Lösung:
Die Anzahl der Spalten für eine Pivot-Abfrage muss definiert werden zur Zeit der Abfragevorbereitung. Um eine dynamische Kreuztabelle zu erreichen, haben Sie zwei Optionen, die das Schreiben von Anwendungscode erfordern:
Option 1: Abfragen eindeutiger Werte und Erstellen dynamischer SQL
Beispiel:
<code class="php">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) { $way = (int) $row["way"]; $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way"; } $pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";</code>
Option 2: Daten Zeile für Zeile abfragen und nachbearbeiten
Beispiel:
<code class="php">$stoparray = array(); foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) { $stopkey = $row["stop"]; if (!array_key_exists($stopkey, $stoparray)) { $stoparray[$stopkey] = array("stop"=>$stopkey); } $waykey = "way_" . $row["way"]; $stoparray[$stopkey][$waykey] = $row["time"]; }</code>
Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamisch kreuztabellierte Tabellen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!