如何组合多个表

时间:2012-01-30 20:04:20

标签: mysql

我有三个表,我想将它们组合成一个视图或临时表,它们是一个学生表:

| id | UPN |   

快照表:

| id | PupilID | Surname | Forename | AssessmentYr |  

结果表:

|  id |  PupilID  | KS1RdTA |  KS1WrTA |  

pupil表中的id与快照和结果中的PupilID匹配,在快照表中可能有多个条目具有相同的PupilID。

学生或成绩表中可能没有任何匹配。

我的问题是如何编写一个查询,它将获取快照表中的每个条目,无论它是否与pupil或结果表中的任何内容匹配,但在可能的情况下匹配它。

我想要将其转换为临时表或后续操作的视图,并欢迎一些最有效的建议。

提前感谢您的帮助。

1 个答案:

答案 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