Buen día.
Esperando se encuentren bien, les informo que estoy desarrollando una aplicación de asistencia para alumnos de escuelas.
En este sentido, por medio de este query mysql:
Código MySQL:
Ver originalSELECT COUNT( tpa.field_asistencia_tipodeasistenci_value
) AS 'Asistencia', al.field_asistencia_alumno_uid
AS 'uid' FROM field_data_field_asistencia_fecha a
INNER JOIN field_data_field_asistencia_alumno al
ON a.entity_id
= al.entity_id
INNER JOIN field_data_field_asistencia_tipodeasistenci tpa
ON a.entity_id
= tpa.entity_id
WHERE a.field_asistencia_fecha_value
>= '2016-8-1' AND a.field_asistencia_fecha_value
<= '2016-8-31' AND tpa.field_asistencia_tipodeasistenci_value
= 'Asistencia'
Obtengo el uid del alumno el cual es el código del alumno así como la cantidad de asistencia mediante un mes.
Este query funciona correctamente.
Ahora bien, también necesito obtener la inasistencia y las excusas.
En este sentido, para no ejecutar diferentes query, intenté obtenerlo todo en una misma consulta, pero no se si es lo recomendable.
Código MySQL:
Ver original
(SELECT COUNT( tpa.field_asistencia_tipodeasistenci_value
) AS 'Asistencia' FROM field_data_field_asistencia_fecha a
INNER JOIN field_data_field_asistencia_alumno al
ON a.entity_id
= al.entity_id
INNER JOIN field_data_field_asistencia_tipodeasistenci tpa
ON a.entity_id
= tpa.entity_id
WHERE a.field_asistencia_fecha_value
>= '2016-8-1' AND a.field_asistencia_fecha_value
<= '2016-8-31' AND tpa.field_asistencia_tipodeasistenci_value
= 'Asistencia' AND al.field_asistencia_alumno_uid
=5 GROUP BY al.field_asistencia_alumno_uid
) AS 'Asistencia',
(SELECT COUNT( tpa.field_asistencia_tipodeasistenci_value
) AS 'Inasistencia' FROM field_data_field_asistencia_fecha a
INNER JOIN field_data_field_asistencia_alumno al
ON a.entity_id
= al.entity_id
INNER JOIN field_data_field_asistencia_tipodeasistenci tpa
ON a.entity_id
= tpa.entity_id
WHERE a.field_asistencia_fecha_value
>= '2016-8-1' AND a.field_asistencia_fecha_value
<= '2016-8-31' AND tpa.field_asistencia_tipodeasistenci_value
= 'Inasistencia' AND al.field_asistencia_alumno_uid
=5 GROUP BY al.field_asistencia_alumno_uid
) AS 'Inasistencia',
(SELECT COUNT( tpa.field_asistencia_tipodeasistenci_value
) AS 'Excusa' FROM field_data_field_asistencia_fecha a
INNER JOIN field_data_field_asistencia_alumno al
ON a.entity_id
= al.entity_id
INNER JOIN field_data_field_asistencia_tipodeasistenci tpa
ON a.entity_id
= tpa.entity_id
WHERE a.field_asistencia_fecha_value
>= '2016-8-1' AND a.field_asistencia_fecha_value
<= '2016-8-31' AND tpa.field_asistencia_tipodeasistenci_value
= 'Excusa' AND al.field_asistencia_alumno_uid
=5 GROUP BY al.field_asistencia_alumno_uid
) AS 'Excusa'
from field_data_field_asistencia_alumno
where field_asistencia_alumno_uid
=5
El resultado sería así:
uid Asistencia Inasistencia Excusa
5 2 1 2
Quisiera saber si existe una mejor forma de hacerlo.
saludos.