从ANSI转换为Oracle Join语法

1 sql oracle join

我想转换以下查询:

SELECT
    request.requestId
FROM
    request
    LEFT OUTER JOIN incident ON incident.requestId = request.requestId
    LEFT OUTER JOIN changeRequest ON changeRequest.requestId = request.requestId
Run Code Online (Sandbox Code Playgroud)

进入它的Oracle join语法等效.我的第一次尝试:

SELECT
    request.requestId
FROM
    request,
    incident,
    changeRequest
WHERE
    incident.requestId = request.requestId(+)
    AND changeRequest.requestId = request.requestId(+)
Run Code Online (Sandbox Code Playgroud)

由于"ORA-01417:一个表可能外部连接到最多一个其他表"错误,因此不起作用.

我意识到Oracle建议使用ANSI方法,但是我对以下Oracle错误感到"痛苦":

http://awads.net/wp/2007/06/14/when-ansi-sql-join-syntax-does-not-work-in-oracle/

提前谢谢,本

Ton*_*ews 7

你有(+)错误的一面,它应该是:

SELECT
    request.requestId
FROM
    request,
    incident,
    changeRequest
WHERE
    incident.requestId (+)= request.requestId
    AND changeRequest.requestId (+)= request.requestId
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我假设您认识到这是旧的 Oracle语法?Oracle已经支持ANSI连接很长一段时间了.