Cita:
Iniciado por wchiquito Hola sebandrescc2,
Trata con la siguiente sentencia:
Código MySQL:
Ver original dev.ALUMNO,
dev.NOTA1,
dev.NOTA2,
dev.NOTA3,
dev.PROMEDIO
i_alumnos.id_alumno,
CONCAT(i_alumnos.apellido
, ' ', i_alumnos.nombre
) ALUMNO
, SUM(IF(t_notas.id_parcial
= 1, t_notas.nota
, NULL)) NOTA1
, SUM(IF(t_notas.id_parcial
= 2, t_notas.nota
, NULL)) NOTA2
, SUM(IF(t_notas.id_parcial
= 3, t_notas.nota
, NULL)) NOTA3
, SUM(t_notas.nota
* (1 - ABS(SIGN(t_notas.id_parcial
- 2)))) + SUM(t_notas.nota
* (1 - ABS(SIGN(t_notas.id_parcial
- 3))))) / COUNT(t_notas.nota
), 1) PROMEDIO
LEFT JOIN t_notas
ON i_alumnos.id_alumno
= t_notas.id_alumno
AND t_notas.id_curso
= '1' AND t_notas.id_ramo
= '1' AND t_notas.semestre
= '1'
En [URL="http://sqlfiddle.com/#!2/3d9dd/44"]sqlfiddle.com[/URL] el resultado.
Debes tener presente lo que te comenta [URL="http://www.forosdelweb.com/f86/como-devolver-registros-sin-valores-1038823/#post4376297"]gnzsoloyo[/URL] del cero (0) y NULL, en este caso dejo NULL para direfenciar de una NOTA con valor cero (0) y una NOTA que no existe (NULL), pero debes tratarlos correctamente.
Espero te sea útil.
Hola wchiquito,
Gracias por la respuesta.
Yo también usé left join para intentar resolver este problema, sin embargo me pasa lo mismo que con esta consulta, ya que aunque aparezca
AND t_notas.id_curso = '1', aparecen los alumnos de todos los cursos (tres alumnos de id_curso=1 y dos de id_curso=2).
Deberían aparecer solo 3, y de esos 3 solo Contreras Castro Sebastián Andrés con todas sus notas null.
Ojala pudieras ayudarme con esto. saludos