左连接多个表到一个表

tum*_*tya 4 sql oracle join

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

我想到的一个经典例子是,我有一堆子查询:
1.子查询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:如果你知道的话,请随意提出更好的方法来获得我需要的东西.

Bar*_*nka 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
Run Code Online (Sandbox Code Playgroud)

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