如题,现在有一个表CYTBXX,里面有字段id,ryid,页面显示其内容后,要根据ryid显示另外两个表PHGSXX(配货公司信息)、PHRYXX(配货人员信息)的全部信息,由于公司框架的需求,现在要用视图的方式进行显示;PHGSXX字段id,gsname;PHRYXX的字段:id,ryname;我自己建立的视图如下:
create or replace view cytbxx_cyid_view(ryid,gsname,ryname,id) as 
select null, phgsxx.gsname,null,null from phgsxx,cytbxx  where cytbxx.ryid(+)=phgsxx.id
 union all
 select null,null,phryxx.ryname,null from phryxx,cytbxx where cytbxx.ryid(+)=phryxx.id
 union all
 select ryid,null,null, id from cytbxx 
按说相同ryid的字段应该显示为一行,但结果却都是为null;即
ryid ,  gsname,ryname,id
 aaa                  1    
 bbb,                 2
  ...                 ...
          aa
          bb
          ...              
                A
                B
        ...
这样子,但是自己想要的应该是ryid和PHGSXX里面的id相同时候应该显示为一行的,同样当ryid和PHRYXX里面的id相同时候也应该显示为一行的;是我建立的视图出现什么问题了吗?            

解决方案 »

  1.   

    select cytbxx.ryid, phgsxx.gsname,phryxx.ryname from phgsxx,cytbxx,phryxx  where cytbxx.ryid(+)=phgsxx.id and cytbxx.ryid(+)=phryxx.id
      

  2.   

    找你这样写应该是把每一列写个别名,然后整体select一把
    select xx,xx from(
    select null xx, phgsxx.gsname,null,null from phgsxx,cytbxx  where cytbxx.ryid(+)=phgsxx.id
     union all
     select null,null,phryxx.ryname,null from phryxx,cytbxx where cytbxx.ryid(+)=phryxx.id
     union all
     select ryid,null,null, id from cytbxx )
    group by xx,xx 才会出你想要的结果