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

数据库视图问题。 在线等#######
A 表卡信息表 cardid 为主键

B 表人员表 关联A表的 cardid

C 表车辆表 也联A表的 cardid

卡会产生报警,人员和车辆都可能产生报警。

现在想建立一个视图:

其中有3个字段, 当cardid能在人员表中查的出来时,用从人员表中查询出来的数据,
  当能从车辆表中查出数据时,用车辆的。 (人员表和车辆表中的外键 cardid不会相同)


求解答!

------解决方案--------------------
B,C表结构一样如下:
SQL code
select B.* from A,B where A.cardid=B.cardid and A.cardid=?
union all
select C.* from A,C where A.cardid=C.cardid and A.cardid=?

------解决方案--------------------
select a.* from a right outer join b on a.cardid=b.cardid
right outer join c on a.cardid=c.cardid
------解决方案--------------------
create view vw_view as select cardid ,col2,col3 from man
union all
select cardid ,col2,col3 from car
union all
select cardid ,col2,col3 from card t 
where not exists(select 1 from man a where a.cardid=t.cardid)
and not exists(select 1 from car a where a.cardid=t.cardid)

这样?