select min(a.aname),count(*) from a,b,c where a.aid = b.aid and b.bid = c.bid and b.bname = '条件'
group by c.bid

解决方案 »

  1.   

    楼上的老大,好像不对啊可能您误解了我的意思,我的意思是:按B表bid的顺序查询B表,同时系统得到“与B表中aid相同的A表中的aname”和“与B表中bid相同的C表中的记录数”
      

  2.   

    不好意思,按您的方法,我改了改,应该是可以了,但是现在还有一个问题,如果B表中的某个bid,在C表中没有数据,那么这个就不能查询到,那我要想什么办法让没有数据的那个也可以查询到了?好像mysql的手册上关于group by就这么写的“返回由一个 SELECT 语句检索出来的记录行中非 NULL 值的记录总数目”,那null值的记录怎么返回呢?
      

  3.   

    楼主,没有太仔细看你的问题,既然上面cloudchen(cloudchen)给出来了,我就在他的基础上修改吧
    你到时候按照原方法修改一下
    select min(a.aname),count(*) from a,b,c where a.aid = b.aid and b.bname = '条件' and (b.bid not in (select distinct bid from c ) or  b.bid = c.bid )
    group by c.bid
    你看看如何
      

  4.   

    select min(a.name),count(*) from a join b on a.aid = b.bid left join c on b.bid = c.bid
    where b.bid = '条件'
    group by b.bid
      

  5.   

    回复人: cloudchen(cloudchen) ( ) 信誉:110  2004-12-22 10:00:00  得分: 0  
     
    select min(a.name),count(*) from a join b on a.aid = b.bid left join c on b.bid = c.bid
    where b.bid = '条件'
    group by b.bid
    ------------------------------------------------------------
    按照这个方法,null值记录可以取出,但是显示的不是0条记录,而是1条,这是怎么回事呢?
      

  6.   

    只要抓住一个关键的问题就是
    子id=父id
    必须否则肯定会得不到你所需的结果
      

  7.   

    回复人: PcVSBirds(pc_birds) ( ) 信誉:100 
    只要抓住一个关键的问题就是
    子id=父id
    必须否则肯定会得不到你所需的结果
    --------------------group by 是存在null值取不到的现象的,我是想知道怎么解决这个问题
      

  8.   

    恩,搞定了,结帖,最后是这样写的:
    select a.name,count(c.bid) as ccount from a join b on a.aid = b.bid left join c on b.bid = c.bid
    where b.bid = '条件'
    group by b.bid