日期:2014-05-17  浏览次数:20790 次

pl-sql语句的问题,求达人解答

select t.GLJG_DM, NVL(NSR.GLJG_DM, 0)
    from DB_DJGL.T_DJ_JGNSR NSR, db_rdgl.t_rd_szjdxx t
 where t.swglm = nsr.swglm(+)            
     and t.GLJG_DM = NSR.GLJG_DM(+)
     and nsr.swglm = 320800100005549;
查询结果:当GLJG_DM 无共同值时,无结果显示,
     
select t.GLJG_DM, NVL(NSR.GLJG_DM, 0)
    from DB_DJGL.T_DJ_JGNSR NSR, db_rdgl.t_rd_szjdxx t
 where t.swglm = nsr.swglm(+)            
     and t.GLJG_DM = NSR.GLJG_DM(+)
     and t.swglm = 320800100005549;    
查询结果:当GLJG_DM无共同值时,显示t 表中的GLJG_DM。
有点迷糊,求达人解答一下,如果该问题太幼稚,喷我,我加强学习。
select

------解决方案--------------------
左连接 是以左表为基础的关联

要显示左表的全部数据 必须在where中 不能出现其他表字段的过滤 否则 数据会显示的不全

如果真要过滤其他表 那要再嵌套一层 再where过滤
------解决方案--------------------
数据少的一方加(+) 已补充null来和主表匹配。 
其它的楼上正解