Foros del Web » Programando para Internet » PHP »

Agrupar Datos de una select

Estas en el tema de Agrupar Datos de una select en el foro de PHP en Foros del Web. Buenas a todos, me gustaria a ver si alguien me puede echar una mano, tengo la siguiente select $STR_modulos = "SELECT num_empleado, apellidos_nombre, COUNT(nempleado_modulo) AS ...
  #1 (permalink)  
Antiguo 12/02/2019, 01:33
 
Fecha de Ingreso: noviembre-2009
Ubicación: Plasencia (Cáceres)
Mensajes: 6
Antigüedad: 9 años, 6 meses
Puntos: 0
Agrupar Datos de una select

Buenas a todos, me gustaria a ver si alguien me puede echar una mano, tengo la siguiente select
$STR_modulos = "SELECT num_empleado, apellidos_nombre, COUNT(nempleado_modulo) AS n_modulos, modulo_tipo, nom_modulo, SUM(num_horas) AS horas ";
$STR_modulos.= "FROM tipo_modulo_supervisores INNER JOIN (personal_sanitario INNER JOIN modulos_supervisores ON num_empleado = nempleado_modulo) ON cod_modulo = modulo_tipo ";
$STR_modulos.= "WHERE fecha_modulo BETWEEN '".$w_listado['fecha_desde']."' AND '".$w_listado['fecha_hasta']."' ";
$STR_modulos.= "GROUP BY nempleado_modulo HAVING COUNT(*) > 1 ";
$STR_modulos.= "ORDER BY cod_modulo, apellidos_nombre, fecha_modulo, fecha_registro_m ";

y el listado que quiero que me salga es el siguiente:
Nº EMPLEADO NOMBRE Y APELLIDOS Nº HORAS Nº MODULOS
MODULO 1 (nom_modulo)
1254 pepito perez 55 4
25789156 ANTOÑITO MACARIO 100 10
MODULO 2 (nom_modulo)
458795 genaro genaro 25 6
78963 pedro petardo 254 18
MODULO 4 (nom_modulo)
125489 juan sin miedo 789 20
458963 el gato con botas 52 41

Gracias de antemano.
  #2 (permalink)  
Antiguo 12/02/2019, 21:40
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 4 años
Puntos: 263
Respuesta: Agrupar Datos de una select

Suponiendo que la query te retorne los datos de esta manera, cosa que no muestras en la pregunta, podrías hacer algo así:

Código PHP:
Ver original
  1. //Datos de muestra de la QUERY
  2. $entrada = [
  3.     ['MODULO'=>'MODULO 1','nombre'=>'Carlos Quintero','id'=>'2054','valor'=>'10'],
  4.     ['MODULO'=>'MODULO 1','nombre'=>'Ramon Zapata','id'=>'5454','valor'=>'80'],
  5.     ['MODULO'=>'MODULO 2','nombre'=>'García Maria','id'=>'548754','valor'=>'45'],
  6.     ['MODULO'=>'MODULO 2','nombre'=>'José Quijada','id'=>'986598','valor'=>'369'],
  7. ];
  8.  
  9. //Array de salida
  10. $salida = [];
  11.  
  12. //Ordena los valores
  13. foreach($entrada as $item){
  14.     if(array_key_exists($item['MODULO'], $salida)){
  15.         array_push($salida[$item['MODULO']], $item);
  16.     }else{
  17.         $salida[$item['MODULO']] = [];
  18.         array_push($salida[$item['MODULO']], $item);
  19.  
  20.     };
  21. }
  22.  
  23. //Genera la lista de elementos
  24. foreach($salida as $clave => $valor ){
  25.     echo "<li>".$clave."<ul>";
  26.     foreach($valor as $val){
  27.         echo "<li>".$val['nombre']." ".$val['id']." ".$val['valor']."</li>";
  28.     };
  29.     echo "</ul></li>";
  30. }

Esto da como resultado algo así:



imagino hay una manera más optima, pero a esta hora es la que se me ocurre. Saludos
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 13/02/2019, 04:13
 
Fecha de Ingreso: noviembre-2009
Ubicación: Plasencia (Cáceres)
Mensajes: 6
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Agrupar Datos de una select

Muchisimas Gracias amigo xfxstudios, voy a probarlo a ver que ocurre pero en principio tiene buena pinta.



La zona horaria es GMT -6. Ahora son las 11:02.