Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2012, 06:10
Avatar de lordofsol
lordofsol
 
Fecha de Ingreso: julio-2011
Ubicación: Campeche Mexico
Mensajes: 4
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Agrupar columnas con ORDER BY sin perder registros ocultos, interesante!!

Buenas!!!!

Estoy haciendo un sistema de reportes para una universidad, en la que me proporcionan la base de datos ya con los registros.

La tabla que me interesa esta mas o memos así:

id_alumno | nombre | periodo | title | grde | programa
232323 - Miguel Soler - 20060 - Algebra - 7 - ing. en Sistemas
232323 - Miguel Soler - 20060 - Español - 8 - ing. en Sistemas
232323 - Miguel Soler - 20040 - Etica - 10 - ing. en Sistemas

343434 - Pedro Perez - 20060 - Algebra - 6 - ing. en Sistemas
343434 - Pedro Perez - 20060 - Español - 8 - ing. en Sistemas
343434 - Pedro Perez - 20040 - Etica - 9 - ing. en Sistemas

454545 - Oscar Lopez - 20060 - Algebra - 10 - ing. en Sistemas
454545 - Oscar Lopez - 20060 - Español - 9 - ing. en Sistemas
454545 - Oscar Lopez - 20040 - Etica - 10 - ing. en Sistemas

787878 - Lupe Meza - 20060 - Admin - 10 - Admon de Empresas
787878 - Lupe Meza - 20060 - Español - 9 - iAdmon de Empresas
787878 - Lupe Meza - 20020 - Etica II - 10 - Admon de Empresas

Donde Title es el nombre de la materia y grde la calificación.

En PHP genero un reporte en Excel, obviamente los registros son por cada materia , y en la BD estan los alumnos de todas las carreras.

al momento de hacer un reporte de la carrera de ingenieria hago lo sig:

Mi tabla se llama "records"

Código PHP:
$colsulta=mysql_query("SELECT id_alumno,nombre,title,grde FROM records WHERE periodo = '20060' AND programa = 'ing. en Sistemas' ); 
Y aqui empieza el dilema:

esta consulta me arroja:

ID | Nombre | Materia| Calific. Final
232323 - Miguel Soler - Algebra - 7
232323 - Miguel Soler - Español - 8

343434 - Pedro Perez - Algebra - 6
343434 - Pedro Perez - Español - 8

454545 - Oscar Lopez - Algebra - 10
454545 - Oscar Lopez - Español - 9

Pero en la tabla necesito que me muestre el nombre una sola vez.

Si le pongo un ORDER BY ó un DISTINCT por nombre, me seleccionara solamente el primer registro de cada nombre que se repita, osea que solo vere en la tabla los tres nombres y Algebra con su respectiva Calificacion.

Y lo que quiero mostrar es como el historial academico, segun el periodo que selecicones, algo asi:

ID | NOmbre | Algebra | Español
232323 - Miguel Soler - 7 - 8
343434 - Pedro Perez - 6 - 8
454545 - Oscar Lopez - 10 - 9

Esto seria un reporte de solo el periodo "20060" de la carrera de "ing. en Sistemas" según el ejemplo que puse, si seleccionara el periodo "20040" En materia, únicamente me debería mostrar "Ética".

Espero me haya explicado bien, lo trate de xplicar de la mejor manera que pude para que me entiendan.

Necesito que me muestre el nombre una sola vez pero sin que la colsulta me ignore el resto de las filas que tienen el mismo nombre, ya que los necesito, es donde estan los nombre de las demas materias y sus respectivas calificaciones.