我有一个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 ),如果我们在那个条件下首先写入它是否会有所不同?
答案 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
类似问题上的回答