日期:2014-05-19  浏览次数:20555 次

求一多表查询语句
现有表   4个表
UserBase——用户基础表,以Type来区分是   个人还是企业
              字段:userid
UserPersonal——个人用户
              字段:   tel,userid
UserCompany——企业用户
              字段:tel,userid
SellInfo——供应信息表
              字段:sellid,title,userid

供应信息可能是个人也可能是企业用户发布的信息。
在查询sellinfo的时候需要查出发布着的联系信息。应该怎样查询呢?

------解决方案--------------------
-----?

select d.sellid,d.title,tel=case when a.Type= '个人 ' then b.tel else c.tel end
from UserBase a inner join UserPersonal b on a.userid=b.userid
inner join UserCompany c on a.userid=c.userid
inner join SellInfo d on a.userid=d.userid
------解决方案--------------------
select t1.*, case t3.userid when null then t4.tel else t3.tel end
from SellInfo t1
inner join UserBase t2 on t1.userid=t2.userid
inner join UserPersonal t3 on t3.userid=t2.userid
inner join UserCompany t4 on t4.userid=t2.userid
------解决方案--------------------
select
a.sellid,
a.title,
b.tel
from sellinfo a inner join (
select e.tel,e.userid,f.type from UserBase f,UserPersonal e where e.userid = f.userid
union all
select g.tel,g.userid,f.type from UserBase f,UserCompany g where g.userid = f.userid
) b on a.userid = b.userid