我有这张桌子:
学生(姓名,studentNumber)-学生表
入学人数(enrollmentNumber,studentNumber,学科)-包含该学生已入学学科的表
成绩(学生人数,科目,成绩)-包含考试成绩的表格
我有这个任务:
编写一条SQL指令以返回学生的姓名,所注册的科目和学生的成绩
在主题中获得。 SQL指令还应该返回注册了
科目且未参加该科目的考试(在这种情况下,该学生将在场
在“注册”表中,但不在“成绩”表中)。
我开发了此查询:
SELECT * FROM student s
LEFT JOIN enrollments e ON s.studentNumber = e.studentNumber
LEFT JOIN grades g ON e.studentNumber = g.studentNumber
WHERE e.subject = g.subject
我知道错误出在最后一个WHERE,因为没有成绩的入学人数没有显示(这是有道理的)...有人可以帮我弄清楚这个吗?
最佳答案
移动
“ e.subject = g.subject”
作为左侧联接的过滤器。当在外部联接上将过滤器用作where的一部分时,它实际上将其转换为INNER JOIN:
SELECT * FROM student s
LEFT JOIN enrollments e ON s.studentNumber = e.studentNumber
LEFT JOIN grades g ON e.studentNumber = g.studentNumber
AND e.subject = g.subject
关于mysql - SQL(也许是基本的)-具有3个表的QUERY,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40497289/