у меня 2 таблицы
SCHOOLS
(ID, SCHOOL_NAME, CITY_ID)
STUDENTS
(ID, STUDENT_NAME, SCHOOL_ID).
Я хочу перечислить школы в определенном городе вместе с количеством учеников (School Name | Student Count)
Один из способов сделать это - создать связанный подзапрос -
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 ??