sql >> Database >  >> RDS >> Mysql

MySQL:gegevens slechts één keer afdrukken voor elke groepering

Als je wilt dat het in de MySQL-query wordt gedaan, is het eerlijk gezegd meer moeite dan het waard is. Ten eerste is de syntaxis echt wankel (zoals ik me herinner) om een ​​groepsnaam bovenaan elke groepering te hebben. En de resultaten worden nog steeds als rijen behandeld, dus de groepsnaam wordt behandeld als een rij met alle andere kolommen als Null, dus je bespaart niet echt tijd of moeite in het PHP-script omdat het een if-statement moet doen om op te vangen wanneer het een groepsnaam raakt in plaats van de groepsgegevens.

Als je wilt dat het wordt gedaan door de PHP while-lus, dan is Johan op de goede weg. Ik gebruik het volgende voor een vergelijkbare situatie:

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

Het is duidelijk dat de echogegevens zo zijn ingesteld dat ze de delen van de gegevens weergalmen zoals u dat wilt. Maar de $prev_group/$curr_group is zo ingesteld dat de enige keer dat ze niet overeenkomen, is wanneer je in een nieuwe groep zit en dus een soort kop wilt afdrukken.



  1. Kan deze SQL-query worden vereenvoudigd?

  2. Juiste manier om te vragen of mysql_num_rows in PHP is

  3. Vraagtekens krijgen bij het invoegen van Hebreeuwse tekens in een MySQL-tabel

  4. psql - sla de resultaten van de opdracht op in een bestand