如何在oracle中更改/简化连接

时间:2010-03-04 16:33:51

标签: oracle join

我加入了一个oracle查询,看起来像:

      FROM eiv.table1
           eiv.table2 b
       WHERE a.state_cd =
             b.state_code(+)

(+)到底是什么意思?

通过这个查询,我注意到,当记录在表中不匹配时,有时候我会得到一个空白区域。

这是左外连接还是右连接?如何简化这一点。

3 个答案:

答案 0 :(得分:1)

SELECT  *
FROM    eiv.table1 a
LEFT JOIN
        eiv.table2 b
ON      b.state_code = a.state_cs

9i之前,Oracle不支持ANSI加入语法,而是使用了(+)子句。

答案 1 :(得分:0)

这意味着它是一个左外连接......详细信息总是来自a,只有在满足条件时才会来自b ...

FROM eiv.table1            eiv.table2 b        在哪里a.state_cd =              b.state_code(+)

=

来自evi.table1一个左连接eiv.tableb b on(a.state_cd = b.state_code)

您可能想要考虑在两个表上使用相同的列名称来表示状态代码,但这可能有点晚......

答案 2 :(得分:0)

http://www.adp-gmbh.ch/ora/sql/outer_join.html

  

“这可能是人们想要的或者它   也许不会。假设我们想要   返回所有数字,即使是德语   翻译缺失,我们需要一个   外连接。外连接使用(+)   在操作员一侧(在...   这种情况恰好是平等的   operator)我们想要有空值   如果没有值匹配则返回:

     

选择l.v“英语”,r.v   来自r,l的“德国人”,其中l.i
  = r.i(+)和r.l(+)='de';

     

这会为每个返回一行   英语单词,即使没有   德语翻译:

     

英语德语   -------------------- --------------------一二zwei三drei四   五“