Oracle左外联和右外联

2014-11-24 17:45:01 · 作者: · 浏览: 0

  create or replace view V_WTK_ALL as


  select a.id, o.short as FindDeptName, u.realname as FindUserName, f.name as FindWay, o1.short as ProblemAtDeptName,


  z.name as szzz, a.yhnr, s.name as SSZY, k.name as kind, w.name as whhg, a.zgcs, a.zgfzr, a.plandate, a.finishdate,


  u1.realname as jdr, u2.realname as fxr, a.yqzt, a.yqdate, a.wtkzt


  from WTK a, ORGANIZATION o, ORGANIZATION o1, OPERATORS u,OPERATORS u1,OPERATORS u2, Kind k, Findway f, SPfield s, SZZZ z, WHHG w


  where a.finddeptid =o.id(+) and a.problematdeptid=o1.id(+) and a.finduserid=u.id(+) and a.jdr=u1.id(+) and a.fxr=u2.id(+)


  and a.kindid=k.id(+) and a.findwayid=f.id(+) and a.spfieldid=s.id(+) and a.szzid =z.id(+) and a.whhgid=w.id(+)


  有两个表


  table1


  user_id user_name user_pss


   1   aaa   a


   2   bbb   b


   3   ccc   c


  table2


  user_id user_power


   1 111000


   2 000111


  使用sql语句查询


  正常状态:


  select table1.user_id,


  table1.user_name,


  table2.user_power


  from table1,table2


  where table1.user_id = table2.user_id


  但是这样检索到的数据只有两条:


  user_id user_name user_power


  1 aaa 000111


  2 bbb 111000


  输入你想转换的文字内容,


  点击下面按钮进行在线转换。


  select table1.user_id,table1.user_name,table2.user_power


  from table1,table2


  where table1.user_id (+)= table2.user_id


  就可以得到如下的结果


  user_id user_name user_power


  1    aaa   000111


  2    bbb   111000


  3     ccc   (null)


  说明﹐左或右连接查询实际上是指定以哪个表的数据为准﹐而默认(不指定左或右连接)是以两个表中都存在关键列的数据的为准。


  内部连接是两个表中都必须有连接字段的对应值的记录,数据才能检索出来


  左连接是只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来


  右连接是只要右边表中有记录,数据就能检索出来