sql >> Base de Datos >  >> RDS >> Mysql

MySQL:imprimir datos solo una vez para cada agrupación

Si desea que se haga en la consulta de MySQL, honestamente es más problemático de lo que vale. Por un lado, la sintaxis es realmente inestable (según recuerdo) para tener un nombre de grupo en la parte superior de cada grupo. Y los resultados aún se tratan como filas, por lo que el nombre del grupo se tratará como una fila con todas las demás columnas como nulas, por lo que realmente no ahorrará tiempo ni esfuerzo en el script PHP, ya que tiene que hacer una declaración if para detectar cuando toca el nombre de un grupo en lugar de los datos del grupo.

Si quieres que lo haga el ciclo while de PHP, Johan está en el camino correcto. Yo uso lo siguiente para una situación similar:

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

Obviamente, los datos de eco se configurarían para repetir las partes de los datos de la manera que desee. Pero $prev_group/$curr_group está configurado para que la única vez que no coincidan sea cuando esté en un grupo nuevo y, por lo tanto, quiera imprimir un encabezado de algún tipo.