Re: [SQL ] 列出沒有與其他欄位關聯的記錄

看板Database作者 (多想兩分鐘 = =")時間15年前 (2008/10/21 21:42), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《eliang ()》之銘言: : 我想請問一個 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 簡單解↓ SELECT students.sid FROM students LEFT JOIN stud_courses ON students.sid=stud.courses.sid WHERE stud.courses.sid IS NULL-- ^是不是有打錯,我只是剪剪貼貼而已XD : 我想說, 只要將上述查詢再加上 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 太難我也不會↓ 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 HAVING COUNT(stud_courses.cid)=0 : 但是此查詢會造成錯誤: Unknown column 'numActors' in 'where clause' : 請問問題出在哪裡, 煩請各位指教, 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.229.206.51

10/22 01:21, , 1F
<(_ _)> 太感謝了
10/22 01:21, 1F
文章代碼(AID): #18_TnYq7 (Database)
文章代碼(AID): #18_TnYq7 (Database)