【发布时间】:2014-04-10 02:03:14
【问题描述】:
我正在尝试执行以下操作
select
TA.C1 ,TB.C1 ,TC.C1
from TableA TA ,TableB TB , TableC TC
where TA.C1 = "ABC"
AND TA.C2 = TB.C1
and TA.C3 = TC.C1
结果是
我的目标是在这个查询中添加更多的表
select
TA.C1,TB.C1,TC.C1,TD.C1,TE.C1
from TableA TA ,TableB TB , TableC TC , TableD TD, TableE TE
where TA.C1 = "ABC"
and TA.C2 = TB.C1
and TA.C3 = TC.C1
and TA.C4 = TD.C1
and TD.C2 = TE.C1
但由于列 TD.C1 包含空值,而 TA.C4 总是有一些值,我得到以下结果。
预期结果是
我尝试使用 Joins 加入 4 个表:
select
TA.C1,TB.C1,TC.C1,TD.C1
from TableA TA
JOIN TableB TB ON (TA.C2 = TB.C1)
JOIN TableC TC ON (TA.C3 = TC.C1)
LEFT JOIN TableD TD ON (TA.C4 = TD.C1)
AND TA.C1 = "ABC"
结果非常接近我的预期:
问题是我不确定如何加入第 5 个表(表 E),因为它与表 A 没有任何连接。
【问题讨论】:
-
E可以加入哪些表?
-
我不明白你的问题。您确实需要从
A到E的直接链接。您只需要一个从A到E的path。显然你有它:A->D->E. -
@WillNewton TableE 可以加入 TableD (TD.C2 = TE.C1)
-
@PM77-1 伙计,我不确定如何加入 D 和 E(我知道 coomand TD.C2 = TE.C1 ),但不确定如何将其放入查询中
-
我有点困惑。如果
TA.C3 = "ABC",TC.C1也应该等于“ABC”。那么你如何获得结果集中的其他行呢?还是我错过了什么?