Я должен переписать много SQL-запросов с Oracle external join notation (+) в ANSI SQL. Я прочитал что-то о синтаксисе Oracle, но были очень легкие примеры. Как посмотреть этот запрос в нотации ANSI?
SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10
или
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
В первом запросе у вас есть alias r, я предполагаю, что это r2.
SELECT * FROM realtion r1 left join relation r2 on r1.relno=r2.relno AND r2.id=10
если r2.id не является частью соединения:
SELECT * FROM realtion r1 left join relation r2 on r1.relno=r2.relno WHERE r2.id=10 or r2.id is null
и (моя догадка m.status не является частью соединения)
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
Первый запрос (предполагая, что по r.ID
вы имели в виду r2.ID
):
SELECT * FROM realtion r1 LEFT OUTER JOIN relation r2 ON r2.relno = r1.relno AND r2.id = 10
Второй запрос:
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
Поделитесь и наслаждайтесь.