Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL :imprimer les données une seule fois pour chaque groupe

Si vous voulez que cela soit fait dans la requête MySQL, c'est honnêtement plus de problèmes que ça n'en vaut la peine. D'une part, la syntaxe est vraiment bancale (si je me souviens bien) d'avoir un nom de groupe répertorié en haut de chaque groupement. Et les résultats sont toujours traités comme des lignes, donc le nom du groupe sera traité comme une ligne avec toutes les autres colonnes comme Null, donc vous n'économiserez pas vraiment de temps ou d'efforts dans le script PHP car il doit faire une instruction if à attraper lorsqu'il rencontre un nom de groupe au lieu des données du groupe.

Si vous voulez que cela soit fait par la boucle PHP while, Johan est sur la bonne voie. J'utilise ce qui suit pour une situation similaire :

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

De toute évidence, les données d'écho seraient configurées pour faire écho aux parties des données comme vous le souhaitez. Mais le $prev_group/$curr_group est configuré de sorte que la seule fois où ils ne correspondent pas, c'est lorsque vous êtes sur un nouveau groupe et que vous souhaitez donc imprimer un en-tête quelconque.