如题,现在有一个表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相同时候也应该显示为一行的;是我建立的视图出现什么问题了吗?
------解决方案--------------------
select cytbxx.ryid, phgsxx.gsname,phryxx.ryname from phgsxx,cytbxx,phryxx where cytbxx.ryid(+)=phgsxx.id and cytbxx.ryid(+)=phryxx.id
------解决方案--------------------
找你这样写应该是把每一列写个别名,然后整体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 )