我正在使用Oracle并且需要基于3列连接2个表(实际上是与别名相同的表),然后与第三个表连接。什么应该是最好的语法?
Select table_3.column_x
From (table_1 left join table_2
Using (column_1 , column_2 , column_3)), table_3
Where Table_2.column_1 = table_3.column_1
我应该在'using statement或'AND'上使用','吗?我应该在哪里插入table_3语句,即使它没有在左连接中使用?
答案 0 :(得分:6)
使用ANSI SQL:
select * from
TABLE1 "TABLE1"
left join TABLE1 "TABLE2" on(TABLE1.c1 = TABLE2.C1 and TABLE1.c2 = TABLE2.C2)
left join TABLE3 "TABLE3" on(TABLE1.c3 = TABLE3.c3)
使用Oracle Join语法:
select * from TABLE1 "TABLE1", TABLE1 "TABLE2", TABLE3 "TABLE3"
where
TABLE1.c1 = TABLE2.c1 (+)
and TABLE1.c2 = TABLE2.c2 (+)
and TABLE1.c3 = TABLE3.c3 (+)
(+)这里表示左连接。我个人更喜欢ANSI SQL方式。对我来说似乎更清洁。您的连接谓词可能与我的示例不同,请记住这一点。