Oracle离开了加入sql查询的问题

时间:2015-02-16 07:48:08

标签: sql oracle oracle11g left-join

我有一个SQL查询,他们使用Left-Join功能,现在需要将其转换为运算符(+)语法。请指导我如何操作,查询如下:

select (some field names) 
from
ldcs2.component comp
LEFT JOIN ldcs2.component_detail cd
   ON cd.component_id = comp.component_id
LEFT JOIN ldcs2.component_item_breakdown cib
   ON cib.component_item_id = cd.component_item_id

那么请指导一下Left-Join在这里指定的内容以及如何将其写入(+)表达式 还引导我,因为他们首先在ON条件中提到了第二个映射表( ldcs2.component_detail ),如果我们在那个条件下首先写入它是否会有所不同?

2 个答案:

答案 0 :(得分:0)

这是你可以做的,但我必须注意,我个人更喜欢ANSI方式。

连接条件有两个方面。当您使用ANSI语法和代码A left join B时,您暗示对于A中的记录,不需要在B上匹配。

当您将(+)放在连接条件的特定一侧时,您暗示类似于"条件这一侧的字段不需要匹配。"

select (some field names) 
from
    ldcs2.component comp,
    ldcs2.component_detail cd,
    ldcs2.component_item_breakdown cib 
where
    cd.component_id (+) = comp.component_id
    and cib.component_item_id (+) = cd.component_item_id

答案 1 :(得分:0)

您可以将ANSI / ISO语法转换为Oracle外连接语法,如下所示 -

SELECT (SOME field names)
FROM ldcs2.component comp,
  ldcs2.component_detail cd,
  ldcs2.component_item_breakdown cib
WHERE comp.component_id     = cd.component_id(+)
AND cd.component_item_id = cib.component_item_id(+)
/
  

那么请指导一下Left-Join在这里指定了什么,以及如何将它写入(+)表达式。

如需详细了解,请参阅我之前在https://stackoverflow.com/a/28499208/3989608

类似问题上的回答