Foros del Web » Programando para Internet » PHP »

Agrupar Registros Mysql en php

Estas en el tema de Agrupar Registros Mysql en php en el foro de PHP en Foros del Web. Saludos, Tengo la necesidad de agrupar registros para presentar en php. Tengo la siguiente tabla: ESTUDIANTE @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código registros: Ver original ID NOMBRE   ...
  #1 (permalink)  
Antiguo 09/08/2009, 10:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 62
Antigüedad: 16 años, 1 mes
Puntos: 0
Agrupar Registros Mysql en php

Saludos,

Tengo la necesidad de agrupar registros para presentar en php.
Tengo la siguiente tabla: ESTUDIANTE
Código registros:
Ver original
  1. ID NOMBRE   FECHA         CALIFICACION   BLOQUE
  2. 1  Juan         2009-07-01         90                  01
  3. 2  Carlos      2009-07-01         80                  01
  4. 3  Jose         2009-07-04        100                 02
  5. 4  Ben          2009-07-05        85                  02
  6. 5  Marcos     2009-07-05        95                  03
  7. 6  Marta       2009-07-06        79                  04
  8. 7  Lia           2009-07-06         90                  04

Deseo presentar esos registros de la tabla ORDENADO POR BLOQUE que me muesre todos los registros y con el grupo de encabezado. EJ..:

ID NOMBRE FECHA CALIFICACION
BLOQUE 01
1 Juan 2009-07-01 90
2 Carlos 2009-07-01 80
promedio del bloque = 85

BLOQUE 02
3 Jose 2009-07-04 100
4 Ben 2009-07-05 85
promedio del bloque = 92.5

BLOQUE 03
5 Marcos 2009-07-05 95
promedio del bloque = 95

BLOQUE 04
6 Marta 2009-07-06 79
7 Lia 2009-07-06 90
promedio del bloque = 94.5

Trate con el group by de mysql pero me presenta un SOLO registro, y deseo verlos todos solo que con el encabezado del grupo.

Última edición por nestorvaldez; 09/08/2009 a las 10:25 Razón: aclarar info
  #2 (permalink)  
Antiguo 09/08/2009, 10:57
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 10 años, 4 meses
Puntos: 150
Respuesta: Agrupar Registros Mysql en php

No, no hay que usar group by ya que tu quieres mostrar todos los registros, olvidamos group by.

Lo que tienes que hacer es recoger los datos de los estudianets ordenados primero por BLOQUE y luego por ejemplo por CALIFICACION seria "....ORDER BY BLOQUE ASC, CALIFICACION DESC"

Luego ANTES del bucle PHP para mostrar cada estudiantes pon una variable por ejemplo $idbloque=0;

Y dentro del bucle preguntamos si el BLOQUE del estudiante es mayor que $idbloque, y si ques que sí, imprimimos la cabecera y le damos el nuevo valor a $idbloque, quedaria algo asi:

While ....... {
If ($rs["BLOQUE"]>$idbloque) {echo "BLOQUE ".$idbloque."<br>";$idbloque=$rs["BLOQUE"];}
}

Espero que te sirva!
  #3 (permalink)  
Antiguo 21/08/2009, 15:21
 
Fecha de Ingreso: octubre-2003
Mensajes: 62
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Agrupar Registros Mysql en php

Gracias muy bien, lo pude lograr..

Ahora tengo otro reporte el cual quise realizar de la misma manera, pero no me salio la logica..

Con el mismo ejemplo anterior de la data, quisiera sacar los registros asi mismo agrupados, pero resumido. Ej:

BLOQUE CANT ESTUDIANTES PROMEDIO BLOQUE
01============ 2 ========== 85
02============ 2 ========== 92.5
03============ 1 ========== 95
04============ 2 ========== 84.5

O sea resumido o totalizado por bloque. NO he podido dar en como acumular cantidad de registros de un bloque completo para mostrar luego solo el bloque con su total.
Si alguien me puede ayudar con alguna logica o alguna manera de realizarlo
  #4 (permalink)  
Antiguo 21/08/2009, 16:23
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 14 años, 9 meses
Puntos: 25
Respuesta: Agrupar Registros Mysql en php

no entendí muy bien, lo que quieres hacer es sumar los bloques del estudiante ó como? si pudieras aclararme bien tu problema te ayudaré :)
__________________
Hospedaje Web al mejor costo!
  #5 (permalink)  
Antiguo 21/08/2009, 16:33
 
Fecha de Ingreso: octubre-2003
Mensajes: 62
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Agrupar Registros Mysql en php

Mucha gracias por responder..

el ejemplo que esta ahi viene del post que puse de primero..

Lo que deseo es imprimir los registros resumido y acumulado por bloques, o sea sumado sin el detalle. Ejemplo tengo 100 registros de estudiantes con diferentes informaciones, bloques, calificaciones, meritorios, etc.
entonces lo que quiero es agrupar en php por bloque, o sea, que en el bloque 01 me salga el total de estudiantes de ese bloque, con el promedio de ese bloque,, contar cuantos meritorios hay en ese bloque, luego en la proxima linea salga el bloque 02 y la misma informacion acumulada.
Lo que no puedo lograr es como hacer para que php solo me presente la linea con el bloque y que yo pueda presentar en esa fila el total de estudiantes y toda la info acumulada por bloque.

La verdad fue que me confundi, al desarrollar la logica..
Te agradeceria mucho q me des una mano con esto.

Espero hayas comprendido lo que deseo.
  #6 (permalink)  
Antiguo 21/08/2009, 16:43
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 14 años, 9 meses
Puntos: 25
Respuesta: Agrupar Registros Mysql en php

ah Ok, ahora ya te comprendo...

mira tu problema lo resuelves con la función SUM de mysql, checate este tuto para que tengas noción de lo que te digo, y si tienes dudas las posteas aqui.

Saludos.
__________________
Hospedaje Web al mejor costo!
  #7 (permalink)  
Antiguo 22/08/2009, 11:15
 
Fecha de Ingreso: octubre-2003
Mensajes: 62
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Agrupar Registros Mysql en php

Con el sum lo trate y me funciona algunas cosas, pero deseo manipular algunas formulas q no lo puedo hacer con el SUM, por esto es que quiero hacerlo con PHP. Por ejemplo. en un campo yo guardo un signo de + y uno de - basado en una calificacion q doy, entonces yo quiero sumar todos los que son + y todos los que son -, eso es un caso, pero tengo varias condiciones que deseo sumar por bloque q con el sum no me funcionaria.
Lo que estoy dandole vueltas es como hacer en PHP que me lea el bloque primero para realizar los calculos y luego que termine de leer el bloque presentar la li nea del bbloque con las formulas ya realizadas.

Yo lo hice en php con esta logica,
Cita:
$idbloque=$rs["BLOQUE"];

$numrows = mysql_num_rows($query);
for($i = 0; $i < $numrows; $i++) {
If ($rs["BLOQUE"]>$idbloque) {
echo "BLOQUE ".$idbloque."<br>";

$idbloque=$rs["BLOQUE"];
}
}
Si analizas la logica esta imprime el bloque la primera vez de cada bloque, y quisiera que imprimiera al final de leer cada bloque para ya tener la info acumulada y presentarla.

Me comprendes... Con este te quiero decir q tengo la idea, pero no he podido sacarlo con PHP.
  #8 (permalink)  
Antiguo 22/08/2009, 19:02
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 14 años, 9 meses
Puntos: 25
Respuesta: Agrupar Registros Mysql en php

Código PHP:
Ver original
  1. <?
  2. $numrows = mysql_num_rows($query);
  3. for($i = 0; ; $i++) {
  4.     if($i > $numrows) {
  5.        
  6.         break;
  7.     }    
  8.     $arreglo[]=$rs["BLOQUE"];
  9. }
  10. echo array_sum($arreglo);
  11. ?>

hice ese code de rapidito haber si te sirve
__________________
Hospedaje Web al mejor costo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:35.