none
求一个多表查询的SQL语句 RRS feed

  • 问题

  • 有两个表:

    表一:id,content
             1,aaaaa
             2,bbbbb
             3,cccccc
             4,eeeeee

    表二:id,nid,news
             1,1,qqqq
             2,1,www
             3,2,eeee
             4,2,rrrr
             5,2,tttt

    其中表二中的nid对应表一中的id

    我想要的结果是这样,查询出表1中的所有数据,而且还要显示表1中的每条记录在表2中分别有几条对应

    select a.id,a.content,count(b.id) as bid from 表一 as a,表二 as b where a.id=b.表一id

    但是这样的结果无法显示出表一中的第三行和第四行的数据,怎么能让其这样显示:

    1,aaaaa,2
    2,bbbbb,3
    3,ccccc,0
    4,eeeee,0

    也就是说表二中没有对应表一的数据,那么在查询出来的结果中就显示0,而不是整个一行数据都不显示,请教这个SQL语句怎么写!谢谢!

    2010年9月26日 7:17

答案

  • select a.id,a.content,isnull(b.counts,0) as counts
    from tt1 a
    left outer join
    (select nid,COUNT(id) as counts
    from tt2
    group by nid) b on a.id = b.nid
    • 已标记为答案 杨述晶 2010年9月26日 8:28
    2010年9月26日 8:21

全部回复