表一:行业大类表ClassTable
字段:cid,cname(大类名称)表二:企业表UserTable
字段:uid,uname,class1(企业所属行业大类名称,对应cname)表三:信息表NewsTable
字段:nid,ntitle(信息标题),uerid(信息所属企业的id,对应表二的uid).请教:每个大类下有多少条信息。没有信息的显示0.比如实现如下效果:cname 新闻条数服装(200)
旅游(12)
房产(359)
五金(0)
。。

解决方案 »

  1.   

    try
    select a.cname,sum(isnull(c.cnt,0)) as 新闻条数 
    from ClassTable a
    left join UserTable b on a.cname=b.class1
    left join
    (select uerid,count(1) as cnt from newstable group by uerid) c
    on b.uid=c.uerid
    group by a.cname
      

  2.   

    select a.cname,sum(case when c.userid is not null then 1 else 0 end) 新闻条数
    from ClassTable a
        left join UserTable b on a.cname=b.class1
        left join NewsTable c on b.uid=c.userid
    group by a.cnameTRY
      

  3.   

    select a.cname,sum(case when c.userid is not null then 1 else 0 end) 新闻条数
    from ClassTable a
        left join UserTable b on a.cname=b.class1
        left join NewsTable c on b.uid=c.userid
    group by a.cname