使用3列在2个表之间左连接,并在Oracle上连接到第3个表

时间:2011-04-03 13:56:57

标签: sql oracle join left-join

我正在使用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语句,即使它没有在左连接中使用?

1 个答案:

答案 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方式。对我来说似乎更清洁。您的连接谓词可能与我的示例不同,请记住这一点。