有没有办法在oracle中做多个左外连接?

Omn*_*ent 1 sql oracle

为什么这不适用于Oracle?

有没有办法让这项工作?

FROM table1 a,
     table2 b,
     table3 c
WHERE a.some_id = '10'
AND a.other_id (+)= b.other_id
AND a.other_id (+)= c.other_id
Run Code Online (Sandbox Code Playgroud)

我希望table1在多个表格上留下外部联系......

如果我尝试将其更改为使用ANSI连接,则会出现编译错误.我做了以下事情:

FROM table2 b, table3 c
LEFT JOIN table1 a ON a.other_id = b.other_id and a.other_id = c.other_id
Run Code Online (Sandbox Code Playgroud)

kdg*_*ory 7

好的,看看Oracle文档中的示例,我对语法的回忆是正确的,所以我将我的评论转化为答案.假设您的目标是左外连接,其中A是基表,并且您连接来自B和C的匹配行,请按如下方式重写您的查询(请注意,我只是更改前缀;我希望将源行设置为正确的).

FROM table1 a,
     table2 b,
     table3 c
WHERE a.some_id = '10'
AND b.other_id (+)= a.other_id
AND c.other_id (+)= a.other_id
Run Code Online (Sandbox Code Playgroud)

如果那不是你想要做的,那么查询就是borked:你正在进行B和C的笛卡尔连接,然后尝试从该部分结果到A的外连接,在A上有一个额外的谓词.没有多大意义.


小智 5

使用ansi加入.他们的IMO更清晰.由于某种原因他们不能使用物化视图...