2011-01-25 10 views
2

У меня есть этот SQL-запрос:Sql запрос, чтобы получить общее количество студентов в классе

SELECT c.id as ID, c.class_name as CLASS, COUNT(e.student_id) AS STUDENT_COUNT 
FROM classes as c 
LEFT JOIN enrollments as e on e.class_id = c.id 
where c.teacher_id = 8 AND e.approved = 1 
group by c.class_name; 

То, что я пытаюсь сделать, это получить все классы и количество студентов, которые были утверждены в этих классах , Запрос SQL должен возвращать что-то вроде

ID   CLASS   STUDENT_COUNT 
1    Math    0 
2    Biology   2 
3    Algebra   1 
4    Literature  5 

Проблема заключается в том, что из-за e.approved = 1 я не получаю никаких классов вообще. Предложения?

Моя схема выглядит следующим образом

табличные классы

id, teacher_id, class_name, grade 

стол Учащихся

id, class_id, student_id, approved 

ответ

4

Изменить запрос на использование e.approved в левой условия соединения:

SELECT c.id as ID, c.class_name as CLASS, COUNT(e.student_id) AS STUDENT_COUNT 
FROM classes as c 
LEFT JOIN enrollments as e on e.class_id = c.id 
AND e.approved = 1 
where c.teacher_id = 8 
group by c.class_name; 
+0

спасибо, что это сработало. – user253530

Смежные вопросы