SQL> select * from a1;BBB
----------
101
102
103
104
105SQL> select * from a2;BBB        CCC
---------- --------------------
101
102
105SQL> select * from a1,a2 where a1.bbb(+)=a2.bbb;BBB        BBB        CCC
---------- ---------- --------------------
101        101
102        102
105        105SQL> select * from a1,a2 where a1.bbb=a2.bbb(+);BBB        BBB        CCC
---------- ---------- --------------------
101        101
102        102
103
104
105        105SQL>

解决方案 »

  1.   

    不使用(+),最好将左关联写到from 后面,在where语句之前
      

  2.   

    9i才支持这种用法
    select * from tb1 left join tb2 on tb1.col=tb2.col
    where ...
      

  3.   

    记得好像我在7i中写过类似语句,9i也可以,8i如何实现?
     SELECT T_GZ_GZHZ.ZGDM,   
             sum(T_GZ_GZHZ.YFGZ) as yfgz,   
             sum(V_GZ_JJ_A.JE) as qtj,   
             sum(V_GZ_JJ_B.JE) as jbbt,   
            count(*) as ys  
        FROM T_GZ_GZHZ, 
             V_GZ_JJ V_GZ_JJ_A,   
             V_GZ_JJ V_GZ_JJ_B,  
             t_gz_xsj
       WHERE( T_GZ_GZHZ.YF >= :as_begin            AND  T_GZ_GZHZ.YF <= :as_end   )     AND   
            ( t_gz_gzhz.zgdm = v_gz_jj_a.zgdm (+)) and  
            ( t_gz_gzhz.zgdm = v_gz_jj_b.zgdm (+)) and  
                   ( V_GZ_JJ_A.SFYF >= :as_begin    AND  V_GZ_JJ_A.SFYF <= :as_end  )   AND 
      ( V_GZ_JJ_B.SFYF >= :as_begin    AND  V_GZ_JJ_B.SFYF <= :as_end  )   AND 
            
            ( V_GZ_JJ_A.JJFYDM = '019' ) AND  
            ( V_GZ_JJ_B.JJFYDM = '030' ) AND  
          
    group by  T_GZ_GZHZ.ZGDM  上面的sql语句在8i中得不到想要的结果.
      

  4.   

    T_GZ_GZHZ 有数据, V_GZ_JJ 无数据 ,要求得到结果,在9i中使用left outer join 的语法可以得到正确结果,在8i中如何实现?