Esa consulta solo retorna datos combinados
de las cuatro tablas luego es logico que si una no tiene no retorne nada....
select idgrupo,
modalidad,
grupos.añolectivo as lectivo,
turno,
maxalumnos,
letra,
nivel ,
sum(case when sexo = 'masculino' then 1 else 0 end) as ninos,
sum(case when sexo = 'femenino' then 1 else 0 end) as ninas,
count(idalumno) as suma //<--Mas facil no?
from grupos, cursos, matriculas, alumnos
where
nombreteblaX.idalumno =
nombreteblaY.id_alumno and
nombreteblaX.id_grupo =
nombreteblaZ.idgrupo and
nombreteblaYY.idcursos=
nombreteblaXX.id_curso
group by id_grupo
Para corregirte la query deberías poner el nombre de origen de la tabla en la clausula where es la unica forma que podamos ver que relación tienen tus tablas...
Repasa la sintaxis de
JOIN...ON es mas moderna que la que usas y quizas te dara luz a tu problema