Dynamische MySQL-Kreuztabelle mit unbekannten Spalten
In MySQL müssen bei herkömmlichen Kreuztabellenabfragen die Anzahl und Namen der Spalten während der Abfragevorbereitung festgelegt werden . Wenn jedoch die Anzahl der Spalten unbekannt ist, wie im Fall dynamischer Kreuztabellenabfragen, sind unterschiedliche Ansätze erforderlich.
Es gibt zwei Hauptlösungen, die das Schreiben von Anwendungscode beinhalten:
1. Fragen Sie eindeutige Werte ab und erstellen Sie die Abfrage:
Beispiel:
<code class="php">foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) { $way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way"; } $pivotsql = "SELECT stop, " . join(",", $way_array) . " FROM `MyTable` GROUP BY `stop`";</code>
2. Zeilenweise Abfrage und Pivot im Code:
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>
Mit jedem dieser Ansätze können Sie dynamische Kreuztabellenabfragen in MySQL durchführen, selbst wenn die Anzahl der Spalten unbekannt ist , was Flexibilität ermöglicht und sich entwickelnden Datenstrukturen Rechnung trägt.
Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamische Kreuztabellenabfragen in MySQL mit unbekannten Spaltennamen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!