左将多个表连接到一个表中

时间:2014-01-14 23:23:29

标签: sql oracle join

我想将多个表连接到一个表。这些表本身就是子查询的结果。

我想到的一个经典例子是,我有一堆子查询:
子查询A给了我学生的详细信息 - 比如表1 2.子查询B给出了数学中的学生分数 - 比如表2 3.子查询C给我学生英语成绩 - 比如表3 这些表格仅包含学生参加该考试的成绩,并且如果他/她完全没有参加考试(或者得分<通过分数),则该学生将被视为失败。我在每个表中都有学生ID(每人唯一)才能加入。

我想从这些中得到什么?我试图建立一个动态查询(其中一些部分在运行时通过外部机制填充)通过在这些表上执行一些连接来给我:
1.通过考试和相应分数的学生 2.学生通过任一测试,但未通过(或没有参加)其他测试和相应的分数(如果没有,则为NULL)。 3.所有学生及其相应的分数。

我想到的是将每个得分表加入学生档案表。我应该怎么做呢?

在你继续并建议table 1 left join table 2 left join table 3之前,如果表2包含特定学生的空记录(根据我的知识),这种结构将导致问题。根据我的理解,这基本上是表2中的表3,而不是表1,这就是我想要的。

PS:如果你知道的话,请随意提出更好的方法来获得我需要的东西。

1 个答案:

答案 0 :(得分:11)

您可以通过仔细写下您的查询来创建适当的关系:

select 
    t1.*, t2.foo, t3.bar
from
    table1 as t1
    left join table2 as t2 on t1.id = t2.id
    left join table3 as t3 on t1.id = t3.id

如您所见,table3table1(而不是table2)相关,这就是您想要的。