La presente es para pedir ayuda frente a una consulta que he tratado de realizar durante todo el dia y no he logrado obtener el resultado esperado.
Estoy desarrollando una aplicación para la administración de las notas de una institución educativa, tratando de realizar un reporte llamado "Boletin", el cual debe mostrar el rendimiento de los estudiantes frente a las asignaturas que se ven en el grado que se encuentra matriculado, tengo una consulta que funciona, pero se que mas adelante se presentaran problemas, puesto que la consulta actual solo muestra las asignaturas de un estudiante, cuando estas tienen una nota asignada, si el docente encargado de la asignatura no ha "subido" sus calificaciones, estas asignaturas no aparecerán en el reporte, he tratado de hacerlo con LEFT JOIN, pero hay algo que no esta funcionando.
Muestro la estructura de las tablas con las cuales estoy trabajando
Tablas Asignaturas
Código:
CREATE TABLE IF NOT EXISTS `asignaturas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `descripcion` varchar(100) NOT NULL, `area_id` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ;
Tabla Asignaturas por Grado
Código:
Tabla NotasCREATE TABLE IF NOT EXISTS `asignaturas_grados` ( `id` int(11) NOT NULL AUTO_INCREMENT, `asignatura_id` int(11) NOT NULL, `grado_id` int(11) NOT NULL, `intensidad` int(11) NOT NULL, `porcentaje` double(11,0) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=134 ;
Código:
CREATE TABLE IF NOT EXISTS `notas` ( `id` int(11) NOT NULL AUTO_INCREMENT, `estudiante_id` int(11) NOT NULL, `periodo_id` int(11) NOT NULL, `asignatura_id` int(11) NOT NULL, `grupo_id` int(11) NOT NULL, `nota` double NOT NULL, `fallas` int(11) NOT NULL, `observaciones` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2120 ;
Voy a dejar de lado las consultas anteriores que he estado tratando de hacer y muestro una que se puede acercar a los resultados esperados:
Notas del estudiante 1275 en el grado 9
Código:
SELECT Estudiante.apellido1, Estudiante.nombre1, Asignatura.descripcion FROM personas AS Estudiante, asignaturas_grados AS AsignaturaGrado, asignaturas AS Asignatura WHERE Estudiante.id = 1275 AND AsignaturaGrado.asignatura_id = Asignatura.id AND AsignaturaGrado.grado_id = 9
Este estudiante debe estar asistiendo a 14 clases, pero solamente 3 de ellas tienen nota asignada, como puedo hacer para que siga mostrando estas mismas 14 asignaturas, 11 con el valor NULL y las 3 con sus respectivas notas