用户表:uid   name
         1     a
         2     b类型表:tid   tname     tp1       tp2
         1      甲     a.gif     b.gif
         2      乙     c.gif     d.gif数据表:cid     cname      uid   tid
         1      第一条      1     1
         2      第二条      1     1
         3      第三条      1     2
         4      第四条      1     1文档表: did   dname   cid
         1    文档1    1
         2    文档2    1
         3    文档3    2
         4    文档4    2
         5    文档5    1
一条数据里包含,数据类型(tid),数据的用户(uid),数据编号(cid),数据名(cname)文档的cid是那一条数据里的文档,是多个文档查数据表里的数据
查找用户 1 的数据 要显示数据名(cname)    类型名(tname)    用户名(uname) 类型图片(如果该数据有文档就是列tp1如果没有文档就是列tp2)
请问各位大哥该怎么实现这样的效果?

解决方案 »

  1.   

    如果该数据有文档就是列tp1如果没有文档就是列tp2)select case when tp1='' then tp2 end
    from 类型表
      

  2.   

    select cname,tname,uname,context
    (select tid,tname,(case case when tp1='' then tp2 end) context
    from 类型表) t2
    where uid='1'
    and 数据表.tid=t2.tid
    and 用户表.uid=数据表.uid
      

  3.   

    select 数据表.cname,数据表.tname,用户表.uname,t2.context from 
    (select tid,tname,(case case when tp1='' then tp2 end) context
    from 类型表) t2,数据表,用户表
    where uid='1'
    and 数据表.tid=t2.tid
    and 用户表.uid=数据表.uid
      

  4.   

    select C.cname,A.uname,B.tname,count(D.dname)as 'doccount'
    from [user]A,type B ,data C LEFT OUTER JOIN doc D on C.cid=D.cid
    where C.uid=A.uid and C.tid=B.tid
    group by C.cname,A.uname,B.tname可以实现如下结果用户名  类型名  文档数量   数据名
    a 甲 2 第二条
    a 乙 0 第三条
    a 甲 0 第四条
    a 甲 3 第一条