Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从Oracle到ANSI外部联接的转换_Sql_Oracle_Outer Join_Ansi Sql - Fatal编程技术网

Sql 从Oracle到ANSI外部联接的转换

Sql 从Oracle到ANSI外部联接的转换,sql,oracle,outer-join,ansi-sql,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 或 在第一个查询中,您有别名r,我猜它是r2 SELECT * FROM realtion r1 left join relation r2 on r1.re

我必须用Oracle外部连接符号(+)将许多SQL查询重写为ANSI SQL。我读了一些关于Oracle语法的书,但是有一些非常简单的例子。这个查询应该如何用ANSI符号表示

SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10


在第一个查询中,您有别名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不是加入的一部分)

第一个查询(假设您所说的
r.ID
是指
r2.ID
):

第二个问题:

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

共享和享受。

第一个查询似乎写得不正确-您的
r.id(+)=10
但是没有别名为“r”的表。
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 
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