у меня 2 стола
SCHOOLS
(ID, SCHOOL_NAME, CITY_ID)STUDENTS
(ID, STUDENT_NAME, SCHOOL_ID).
Я хочу перечислить школы в определенном городе вместе с количеством учеников (Название школы | Количество учеников)
Один из способов сделать это - иметь связанный подзапрос -
select sh.school_name,
(select count(*)
from student
where school_id = sh.id) as student_count
from schools sh
where sh.city_id = 1
Но поскольку связанные запросы не рекомендуются, я хочу избежать этого, и я попробовал группу с помощью -
select sh.school_name,
count(st.school_id) as student_count
from schools sh
left join students st on sh.id = st.school_id
where sh.city_id = 1
group by st.school_id
Теперь это работает только в том случае, если количество учеников в школе > 0. Поэтому я предполагаю, что концепция левого соединения не работает, то есть если какие-либо школы, в которых нет учеников, должны быть указаны как student_count = 0, но этого не происходит. Интересно то, что я вижу "одну" запись со student_count = 0, но на этом все.
Что-то не так в моем запросе LEFT JOIN??