Heim  >  Artikel  >  Datenbank  >  Wie erstelle ich dynamische Kreuztabellenabfragen in MySQL mit unbekannten Spaltennamen?

Wie erstelle ich dynamische Kreuztabellenabfragen in MySQL mit unbekannten Spaltennamen?

Susan Sarandon
Susan SarandonOriginal
2024-10-27 14:07:01864Durchsuche

How to Create Dynamic Cross-Tab Queries in MySQL with Unknown Column Names?

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:

  • Rufen Sie eindeutige Werte für die unbekannte Spalte ab (z. B. Weg).
  • Erstellen Sie eine Pivot-Abfrage, indem Sie die eindeutigen Werte zu einem Formular zusammenfügen die SELECT-Listenspalten.
  • 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:

  • Fragen Sie die Daten in ihrer ursprünglichen Struktur ab.
  • Schreiben Sie Code, um die Daten vor der Anzeige in Spalten zu schwenken.
  • 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn