Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL:Daten nur einmal für jede Gruppierung drucken

Wenn Sie möchten, dass dies in der MySQL-Abfrage ausgeführt wird, ist dies ehrlich gesagt mehr Ärger als es wert ist. Zum einen ist die Syntax (soweit ich mich erinnere) wirklich wackelig, einen Gruppennamen oben in jeder Gruppierung aufzuführen. Und die Ergebnisse werden immer noch als Zeilen behandelt, sodass der Gruppenname wie eine Zeile mit allen anderen Spalten als Null behandelt wird, sodass Sie im PHP-Skript nicht wirklich Zeit oder Mühe sparen, da es eine if-Anweisung ausführen muss zu fangen, wenn es auf einen Gruppennamen statt auf die Gruppendaten trifft.

Wenn Sie möchten, dass dies von der PHP-While-Schleife erledigt wird, ist Johan auf dem richtigen Weg. Ich verwende Folgendes für eine ähnliche Situation:

$result = $sql->query($query);

$prev_group = "";

while($data = $result->fetch_assoc()){
   $curr_group = $data['group'];
   if ($curr_group !== $prev_group) {
      echo "<h1>$curr_group</h1>";
      $prev_group = $curr_group;
    }
    else {
        echo $data;
        .....
     }

Offensichtlich würden die Echodaten so eingerichtet, dass sie die Teile der Daten so wiedergeben, wie Sie es möchten. Aber die $prev_group/$curr_group ist so eingerichtet, dass sie nur dann nicht übereinstimmen, wenn Sie sich in einer neuen Gruppe befinden und daher eine Art Header drucken möchten.