【问题标题】:Left Joins in OracleOracle中的左连接
【发布时间】:2017-05-12 09:07:03
【问题描述】:

这个问题可能看起来很琐碎,但是作为 sql 编程的新手,我在理解左连接时遇到了一些麻烦。

为了说明,我有以下场景 -

我必须对下表执行左连接 -

from T1.id to T2.id
from T2.Oi to T3.Oi
from T1.Pi to T4.Pi
from t4.Si to T5.Si
from T6.Ki to T7.Ki

我正在尝试执行以下方法,但不确定其方法是否正确,如果是,则不确定其是否有效

select /*(whatever I want)*/
from
T1 left join T2 on T1.id = T2.id
left join T4 on T1.Pi = T4.Pi
left join T5 on T4.Si = T5.Si
left join T3 on T2.Oi = T3.Oi
(Getting stuck on joining T6 and T7)

有人可以帮助我了解我的上述方法是否正确以及如何解决加入 T6 和 T7

干杯!

【问题讨论】:

  • 但是 t6 与任何 t1 - t5 表有什么关系?

标签: sql oracle join left-join


【解决方案1】:

连接表 T1..T5 应该是这样的:

SELECT *
FROM T1
LEFT JOIN T2
ON T2.ID=T1.ID
LEFT JOIN T3
ON T3.OI=T2.OI
LEFT JOIN T4
ON T4.PI=T1.PI
LEFT JOIN T5
ON T5.SI=T4.SI

我不知道您在这些表格中有什么,所以请考虑笛卡尔积(当然,在某些情况下它可能是理想的结果)。阅读更多here

我不知道表 T6 和 T7 怎么样。如果记录的格式相同,您可能需要使用 UNION(请考虑 UNION ALL 运算符 - read about difference:

SELECT *
FROM T1
LEFT JOIN T2
ON T2.ID=T1.ID
LEFT JOIN T3
ON T3.OI=T2.OI
LEFT JOIN T4
ON T4.PI=T1.PI
LEFT JOIN T5
ON T5.SI=T4.SI
UNION
SELECT *
FROM T6
LEFT JOIN T7
ON T7.KI=T6.KI

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-02
    • 2020-09-28
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多