Cita: me sigue obviando al alumno Sebastián que es el que no tiene calificaciones, pero pertenece al id_curso=1
No te lo está obviando. Es que tu estás poniendo tres condiciones obligatorias y ese alumno no cumple con dos de ellas, por tanto no pertenece al rango.
Básicamente te estás olvidando del funcionamiento del AND.
Para que devuelva lo que quieres se deben cumplir estas condiciones:
1) Pertenecer al curso Nº 1 y no tener notas.
2) Pertenecer al curso, tener notas, estar en el ramo Nº 1 y además ser notas del semestre Nº 1.
Es decir, hay dos juegos de condiciones diferentes, que tienen en común un sólo parámetro.
Ahora bien, como ese parámetro puede no darse en la tabla de notas cuando el alumno no tiene, entones debe evaluarse sólo para la primera tabla, mientrs que en el segundo caso hay que evaluar la segunda tabla.
El resto de los parámetros deben ser nulos, o bien tener 1 en ambos valores.
La consulta sería:
Código MySQL:
Ver original CONCAT(A.apellido
, ' ', A.nombre
) ALUMNO
, i_alumnos A
LEFT JOIN t_notas N
ON A.id_alumno
= N.id_alumno
(A.id_curso=1
(N.id_curso = 1
Trata de analizar claramente los grupos de condiciones que debe cumplir cada caso.
Prueba:
Código MySQL:
Ver original -> CONCAT(A.apellido
, ' ', A.nombre
) ALUMNO
, -> i_alumnos A
LEFT JOIN t_notas N
ON A.id_alumno
= N.id_alumno
-> (A.id_curso=1
-> (N.id_curso = 1
+-----------------------------------+-------+-------+-------+----------+
| ALUMNO | nota1 | nota2 | nota3 | PROMEDIO |
+-----------------------------------+-------+-------+-------+----------+
| Castro Galarce Raquel | 5.8 | 3.8 | 3.0 | 4.2 |
| Contreras Castro Sebastißn AndrÚs | 0.0 | 0.0 | 0.0 | 0.0 |
| Morgado Cifuentes Eduardo Alfredo | 7.0 | 7.0 | 6.0 | 6.7 |
+-----------------------------------+-------+-------+-------+----------+