这可能是真的,但基本我卡!右加入表本身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