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

Mr *_*r S 4 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
Run Code Online (Sandbox Code Playgroud)

我应该在'using statement或'AND'上使用','吗?我应该在哪里插入table_3语句,即使它没有在左连接中使用?

Erk*_*lat 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)
Run Code Online (Sandbox Code Playgroud)

使用Oracle Join Syntax您可以:

select * from TABLE1 "TABLE1", TABLE1 "TABLE2", TABLE3 "TABLE3"
where
    TABLE1.c1 = TABLE2.c1 (+)
and TABLE1.c2 = TABLE2.c2 (+)
and TABLE1.c3 = TABLE3.c3 (+)
Run Code Online (Sandbox Code Playgroud)

(+)这里代表左连接.我个人更喜欢ANSI SQL方式.对我来说似乎更清洁.您的连接谓词可能与我的示例不同,请记住这一点.

  • @OMGPonies如果您在Oracle商店工作,请不要:) (2认同)