Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL:stampa dei dati una sola volta per ogni raggruppamento

Se vuoi che sia fatto nella query MySQL, onestamente è più un problema di quanto non valga la pena. Per uno, la sintassi è davvero traballante (per quanto ricordo) per avere un nome di gruppo elencato nella parte superiore di ogni raggruppamento. E i risultati sono ancora trattati come righe, quindi il nome del gruppo verrà trattato come una riga con tutte le altre colonne come Null, quindi non risparmierai tempo o fatica nello script PHP poiché deve eseguire un'istruzione if per catturare quando colpisce il nome di un gruppo invece dei dati del gruppo.

Se vuoi che venga eseguito dal ciclo while di PHP, Johan è sulla strada giusta. Uso quanto segue per una situazione simile:

$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;
        .....
     }

Ovviamente i dati dell'eco sarebbero impostati per fare eco alle parti dei dati nel modo desiderato. Ma $prev_group/$curr_group è impostato in modo che l'unica volta che non corrispondono è quando sei in un nuovo gruppo e quindi vuoi stampare un'intestazione di qualche tipo.