2009-10-02 206 views
0

我試圖顯示一個表格顯示課程列表。我想列出一個欄目,顯示已完成課程的人數,如果可能的話,還包括尚未完成課程的人數。SQL JOIN + COUNT查詢

我的表結構如下所示:

Courses 
courseid | title | etc 

Studying 
courseid | studentid | some other fields | has_completed 

理想的情況下,輸出應該是這樣的,例如:

Course Title | some other fields | Students completed | Students not completed 
Something  etc     5     3 

我有困難得到統計的兩個獨立的領域。任何人都可以推薦一個好方法來做到這一點?

任何意見讚賞,謝謝。

回答

4

像這樣的東西應該做的:

SELECT c.CourseID, c.Title, SUM(s.Has_Completed) Completed, SUM(1-s.Has_Completed) NotCompleted 
FROM Courses c 
LEFT JOIN Studying s ON c.CourseID = s.CourseID 
GROUP BY c.CourseID, c.Title 
1

如果HAS_COMPLETED的值爲1爲假的真和0,就可以解決這個問題很簡單:

SELECT c.title, SUM(s.has_completed) as completed, COUNT(studentid) - SUM(s.has_completed) as notCompleted 
FROM Courses c, Studying s 
where c.courseid = s.courseid 
GROUP BY c.courseid, c.title 
+0

沒有學生的課程將被排除在您的查詢中。 – Lucero 2009-10-02 11:28:24