现有表 4个表
UserBase——用户基础表,以Type来区分是 个人还是企业
       字段:userid
UserPersonal——个人用户
       字段: tel,userid
UserCompany——企业用户
       字段:tel,userid
SellInfo——供应信息表
       字段:sellid,title,userid供应信息可能是个人也可能是企业用户发布的信息。
在查询sellinfo的时候需要查出发布着的联系信息。应该怎样查询呢?

解决方案 »

  1.   

    -----?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
      

  2.   

    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
      

  3.   

    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
      

  4.   

    回楼上二位,这样的话 如果 其中一个表没有对应信息就查不出结果了。
    事实上既然在personal中有数据那么在company中肯定是没有的
      

  5.   

    刚刚错了
    select t1.*, t3.tel
    from SellInfo t1
    inner join UserBase t2 on t1.userid=t2.userid
    inner join UserPersonal t3 on t3.userid=t2.userid
    union
    select t1.*, t3.tel
    from SellInfo t1
    inner join UserBase t2 on t1.userid=t2.userid
    inner join UserCompany t3 on t3.userid=t2.userid