问题
I have to rewrite a lot of SQL queries with Oracle outer join notation (+) to ANSI SQL. I read something about Oracle syntax but there were very easy examples. How should look this query in ANSI notation?
SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10
or
SELECT * FROM Mail M, Code C, Relation R WHERE M.STATUS = 2 AND C.id = M.usrID AND r.relo(+) = m.item AND R.item(+) = m.att
回答1:
In a first query you have alias r, my guess it is r2.
SELECT * FROM realtion r1
left join relation r2 on r1.relno=r2.relno AND r2.id=10
if r2.id is not part of a join:
SELECT * FROM realtion r1
left join relation r2 on r1.relno=r2.relno
WHERE r2.id=10 or r2.id is null
and (my guess m.status is not part of a join)
SELECT * FROM Mail M
inner join Code C on m.usrID = c.id
left join Relation R on m.item = r.relo and m.att = r.item
WHERE M.STATUS = 2
回答2:
First query (assuming that by r.ID
you meant r2.ID
):
SELECT *
FROM realtion r1
LEFT OUTER JOIN relation r2
ON r2.relno = r1.relno AND
r2.id = 10
Second query:
SELECT *
FROM Mail M
INNER JOIN Code C
ON C.id = M.usrID
LEFT OUTER JOIN Relation R
ON r.relo = m.item AND
R.item = m.att
WHERE M.STATUS = 2
Share and enjoy.
来源:https://stackoverflow.com/questions/23762963/conversion-from-oracle-to-ansi-outer-join