2011-01-25 87 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我根本沒有得到任何類。建議?

我的模式是如下

CLASSES表

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 2011-01-25 04:12:59