2014-11-21 27 views
-1

我的代碼已經顯示了失敗課程的學生,但我還想顯示學生失敗的課程數量。如何顯示學生失敗的課程數量

這是我目前所面對的代碼:

SELECT s.studentid, s.name 
FROM student s 
INNER JOIN notes ON s.studentid = notes.studentid 
WHERE notes.note < "50" 
ORDER BY student.name 

我有三個表。

學生:

| studentid | name | 

筆記:

| studentid | note | courseid | 

和課程:

| courseid | 

回答

0

使用聚合函數Count()

SELECT s.studentid, s.name,notes.courseid ,count(1) CNT 
FROM student s 
INNER JOIN notes ON s.studentid = notes.studentid 
WHERE (notes.note) < "50" 
group by s.studentid, s.name, notes.courseid 
ORDER BY student.name 
+0

這隻顯示有多少學生未通過課程,我想了解每個學生失敗了多少門課程。 – Coder404 2014-11-21 02:24:39

+0

@Martin立即檢查 – 2014-11-21 02:27:00

+0

第1行的語法錯誤,可能是版本 – Coder404 2014-11-21 02:37:21

0

我知道這已經有一個答案,但我想提出一個不同的觀點:

既然你已經在票據表格studentid和courseid,你可以抓住你從該表中想要的一切:

SELECT studentid, COUNT(*) AS numFailedCourses 
FROM notes 
WHERE note < 50 
GROUP BY studentid 

這將從筆記表中選擇所有具有失敗成績的行,並按學生ID進行分組。然而,如果你確實需要學生名字,你仍然需要加入學生表,這與已經給出的答案相同:

SELECT s.studentid, s.name, COUNT(*) AS numFailedCourses 
FROM notes n 
JOIN students s ON s.studentid = n.studentid 
WHERE n.note < 50 
GROUP BY s.studentid 
ORDER BY s.name