我有三个表,我想将它们组合成一个视图或临时表,它们是一个学生表:
| id | UPN |
快照表:
| id | PupilID | Surname | Forename | AssessmentYr |
结果表:
| id | PupilID | KS1RdTA | KS1WrTA |
pupil表中的id与快照和结果中的PupilID匹配,在快照表中可能有多个条目具有相同的PupilID。
学生或成绩表中可能没有任何匹配。
我的问题是如何编写一个查询,它将获取快照表中的每个条目,无论它是否与pupil或结果表中的任何内容匹配,但在可能的情况下匹配它。
我想要将其转换为临时表或后续操作的视图,并欢迎一些最有效的建议。
提前感谢您的帮助。
答案 0 :(得分:0)
您没有指定results
表中某些记录的pupil
表是否缺少行,但我相信这正是您所需要的:
SELECT
pupil.UPN,
pupil.id,
snapshot.Surname,
snapshot.Forename,
snapshot.AssessmentYr,
results.KS1RdTA,
results.KS1WrTA
FROM
pupil LEFT JOIN snapshot ON pupil.id = snapshot.PupilID
LEFT JOIN results ON pupil.id = results.PupilID
如果我误解了,pupil
表格中的相关行可能会从snapshot
中丢失(即PupilID
中的空snapshot
,那么这可能是正确的查询,使用的LEFT JOIN
更喜欢snapshot
而不是pupil
。
SELECT
pupil.UPN,
pupil.id,
snapshot.Surname,
snapshot.Forename,
snapshot.AssessmentYr,
results.KS1RdTA,
results.KS1WrTA
FROM
snapshot LEFT JOIN pupil ON snapshot.PupilID = pupil.id
LEFT JOIN results ON snapshot.PupilID = results.PupilID