Despues de muchas lunas viendo un sistema, me encuentro sin inspiracion.
He aqui mi dilema:
Tengo una BD que tiene una tabla de Asistencias, una de Alumnos y otra de Cursos.
Me interesa mostrar en una tabla la asistencia de los alumnos.
La tabla asistencias es mas o menos asi:
Código :
Id -- alumno_id -- curso_id -- fecha_dictado -- estado -- ciclo -- seccion 1 -- 415263 - 123 - 12/09/2008 - P -- 5 -- K 2 -- 415263 - 123 - 19/09/2008 - F -- 5 -- K 3 -- 456268 - 123 - 12/09/2008 - P -- 5 -- D 4 -- 456268 - 123 - 19/09/2008 - P -- 5 -- D
Como ven.. en la tabla asistencia estan todos los alumnos y se llena dia tras dia. Por lo que un alumno tiene "n" entradas establecidas por el dia en que se dicto su clase. Y las clases tambien son varias.
Esta tabla tengo que relacionarla con la de alumnos para visualizar el nombre del alumno y con la de cursos para jalar el nombre del mismo.
En fin... yo recupero todos los datos.. y he ahi mi dilema porque yo los recupero por ciclo y seccion y curso pero si se dan cuenta el nombre del mismo alumno se repite y yo necesito mostrar algo como esto por clase:
Código :
Alumno - Total Clases -- Asistencias - Faltas -- % Inasistencias
En donde si son cuatro alumnos.. solo me muestre los cuatro alumnos, empero al jalar los datos de la consulta me aparece el mismo alumno todas las veces en que hubo clases ya que si dicha clase se dicto 8 veces ocho veces aparece el alumno en mi tablita..
Si se que puede ser algo sencillo.. pero ahorita lo veo complicado...
¿Como deberia armar mi consulta o mi foreach en PHP para generar correctamente lo que les comento?
Mi consulta es esta:
Código :
SELECT Act.alumno_id,Alus.apellido_paterno,curso_codigo_ipp,Alus.apellido_materno, Alus.nombres, Asis.dictado_fecha,Asis.estado, Activos.ciclo,Activos.seccion FROM (asistencias AS Asis INNER JOIN activos AS Act ON (Asis.alumno_id=Act.alumno_id)) INNER JOIN alumnos AS Alus ON ((Act.alumno_codigo=Alus.codigo)) WHERE curso_codigo ="'.$cod_cur.'" GROUP BY Act.alumno_id')
En mi PHP hago un foreach normal para recoger todos los registros.. pero no es exactamente lo que necesito ya que me bota el mismo usuario varias veces... y mi tabla imprime eso...
Ahora sin embargo para ver cuantas clases asistio tengo que contar de ese usuario cuantos estados "P" tiene y para inasistencia obviamente contar los que no son "P"
Alguna idea de la logica.. o mi consulta esta pesima??...
Help!!!