我在下面有这个联接查询,这让我得到了我正在寻找的结果。
select TA.ColumnB,TB.ColumnB
from TableA TA,TableB TB, TableC TC
where
TA.ColumnA=TB.ColumnA(+)
and TB.ColumnA = TC.ColumnA(+)
AND TA.ColumnC = 'ABC'
结果==> 3 Rows
表格如下:
所需结果:
我想知道是否有办法在JOIN中明确地写出相同而不是(+)
符号。由于TableB.ColumnA
是where条件的共同点,我可以以某种方式减少代码或以不同方式编写以减少外连接的数量吗?
我试过了 尝试1
Select
TA.ColumnB,TB.ColumnB
from TableA TA
LEFT JOIN TableB TB ON (TA.ColumnA = TB.ColumnA)
LEFT JOIN TableC TC ON (TB.ColumnA = TC.ColumnA)
AND TA.ColumnC = 'ABC'
结果==>行数很多
尝试2
Select
TA.ColumnB,TB.ColumnB
from TableA TA
LEFT JOIN TableB TB ON (TA.ColumnA = TB.ColumnA)
JOIN TableC TC ON (TB.ColumnA = TC.ColumnA)
AND TA.ColumnC = 'ABC'
结果==> 2 rows
答案 0 :(得分:1)
我的尝试1非常接近解决方案。 where
条件解决了该问题。我正在使用而不是可能导致问题的地方
Select
TA.ColumnB,TB.ColumnB
from TableA TA
LEFT JOIN TableB TB ON (TA.ColumnA = TB.ColumnA)
LEFT JOIN TableC TC ON (TB.ColumnA = TC.ColumnA)
where TA.ColumnC = 'ABC'
答案 1 :(得分:0)
请你试试
Select TA.ColumnB,TB.ColumnB from
TableC TC
LEFT JOIN TableB TB ON (TC.ColumnA = TB.ColumnA)
LEFT JOIN TableA TA ON (TB.ColumnA = TA.ColumnA)