這可能是真的,但基本我卡!右加入表本身SQL
我有兩個表,一個顯示了班級的學生都在和另一這表明各年級學生已經收到了什麼。我想找出哪些學生,從一個特定的班級,沒有成績。
我寫了這個代碼爲起點,其發現在一類是有成績的學生名單:
SELECT mem.student_id, mem.class_id
FROM class_memberships as mem
inner join grades as gr
on mem.student_id = gr.student_id
where mem.class_id = 12 and gr.grade_type = 18
一個可行的治療,但我真正需要的是在學生他們沒有成績,而不是那些成績。我以爲我可以右連接對成員表如下,但它沒有工作:
SELECT mem.student_id, mem.class_id
FROM class_memberships as mem
inner join grades as gr
on mem.student_id = gr.student_id
right join class_memberships as mem2
on mem.student_id = mem2.student_id
where mem.class_id = 12 and gr.grade_type = 18
and mem.student_id is null
以上不返回任何行,我知道有一個學生沒有一個檔次。我跟着google上的SQL右鍵連接的例子來到上面。我想這是不工作的,因爲'mem.student_id是空'子句,但谷歌上的所有作弊表示我需要它。
請幫忙!我是SQL的新手(一般編碼),所以這可能是非常基本的,但我無法在任何地方找到答案。謝謝:)
如果這是sql server,Google'SQL Server NOT EXISTS'。還要標記這個問題適用於哪個RDBMS。 – dfundako
僅供參考,沒有人使用'RIGHT JOIN'。 'LEFT JOIN',是...但通常如果我們傾向於使用'RIGHT JOIN'我們重寫所以,這是一個'LEFT JOIN'。從最小的桌子開始,找到你需要的東西。 – SQLMason