我想請問一個 SQL 該如何下,
假設我有兩個表格, 第一個表格記錄學生資料:
TABLE students
+-----+------+--------
| sid | name | ...... (sid 為學生 id)
+-----+------+--------
| 1 | Tom |
| 2 | Jack |
| 3 | Mary | ......
| 4 | John |
| 5 | Joe |
+-----+------+--------
第二個表格記錄學生選了什麼課:
TABLE stud_courses
+-----+-----+
| sid | cid | (sid 為學生 id, cid 為課程 id)
+-----+-----+
| 1 | 1 |
| 1 | 4 |
| 2 | 4 |
| 2 | 3 |
| 2 | 6 |
| 4 | 1 |
+-----+-----+
請問我 SQL 要怎麼下, 才能選出「所有沒有選到課的學生」?
(即 id 是 3 和 5 的學生, Mary 和 Joe)
我的想法是這樣的:
我用以下查詢可以查出每個學生選的課程數量,
SELECT students.sid, COUNT(stud_courses.cid) AS numCourses
FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid
GROUP BY students.sid
我想說, 只要將上述查詢再加上 numCourses=0 限制條件,
就可以得到我要的答案, 即:
SELECT students.sid, COUNT(stud_courses.cid) AS numCourses
FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid
WHERE numCourses=0
GROUP BY students.sid
但是此查詢會造成錯誤: Unknown column 'numActors' in 'where clause'
請問問題出在哪裡, 煩請各位指教, 謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.133.199
※ 編輯: eliang 來自: 220.132.133.199 (10/21 20:49)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):