Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL-Ergebnisse nach mehreren Feldern gruppieren und zugehörige Daten anzeigen?

Wie kann ich MySQL-Ergebnisse nach mehreren Feldern gruppieren und zugehörige Daten anzeigen?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 12:50:03988Durchsuche

How Can I Group MySQL Results by Multiple Fields and Display Associated Data?

MySQL-Gruppenergebnisse nach Felddaten: Erforschung von Lösungen für komplexe Datenmanipulation

In diesem Artikel befassen wir uns mit der Herausforderung des Gruppierens und Anzeigens Ergebnisse aus einer MySQL-Datenbank basierend auf spezifischen Felddaten. Konkret wollen wir ein Szenario angehen, in dem die Datenbank diesem ähnelt:

ID    Group   Name

1       1       John
2       1       Andrea
3       1       Jack
4       2       Mike
5       2       Kurt
6       3       Alice

Ursprüngliches Problem: Gruppierung nach einem einzelnen Feld

Die anfängliche Anforderung besteht darin Präsentieren Sie die Daten in tabellarischer Form und gruppieren Sie sie nach dem Feld „Gruppe“:

Group       Name
-----------------------
  1         John
            Andrea
            Jack
-----------------------
  2         Mike
            Kurt
-----------------------
  3         Alice
-----------------------

Lösung:

  • MySQL-Abfrage: Mit der Funktion GROUP_CONCAT können wir die eindeutigen Werte aus dem Feld „Name“ für jeden eindeutigen „Gruppen“-Wert verketten:
<code class="sql">SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group</code>
  • PHP-Implementierung: Um die Ergebnisse in einer HTML-Tabelle anzuzeigen, können wir die Daten aus der Abfrage abrufen und mit PHP verarbeiten:
<code class="php">$result = $dbc->query("
SELECT
p.Group as 'group',
GROUP_CONCAT(name) as names
FROM prueba p
GROUP BY p.Group
");

echo "<table border='1'><tr><th>Group</th><th>Name</th></tr>";
while($row = $result->fetch_assoc()){
    $names = split(",",$row["names"]);
    echo "<tr><td rowspan='".count($names)."'>".$row["group"]."</td><td>".$names[0]."</td></tr>";
    array_shift($names);
    foreach($names as $name){
        echo "<tr><td> </td><td>".$name."</td></tr>";
    }
}
echo "</table>";</code>

Fortgeschrittenes Problem: Gruppierung nach mehreren Feldern

Das Problem wird komplexer, wenn wir mehrere Felder zur Gruppierung zusammen mit zusätzlichen Daten einführen, die jeder Gruppe zugeordnet sind. Betrachten Sie beispielsweise die folgende Datenbank:

ID    meta_key  meta_value   name

1       group     1          John
2       group     1          Andrea
3       group     1          Jack
4       group     2          Mike
5       group     2          Kurt
6       group     3          Alice

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Ergebnisse nach mehreren Feldern gruppieren und zugehörige Daten anzeigen?. 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