我必须使用Oracle外连接符号(+)将大量SQL查询重写为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
答案 0 :(得分:0)
在第一个查询中你有别名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
答案 1 :(得分:0)
第一个查询(假设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
分享并享受。