从Oracle转换为ANSI外连接

时间:2014-05-20 14:42:40

标签: sql oracle outer-join ansi-sql

我必须使用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

2 个答案:

答案 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

分享并享受。