有表a,b   ,下面是一些数据
select * from a;
id     name     namecode          ids
1       w           1w              11
2       s          2s              22
3       c          3c              33
4       d          4d              33select * from b;
id     name       vid             ids
1       w          11              11
2       s          22              22
3       c          33              33
4       d          33              33联合查询结果
select * from a,b where a.ids=b.idsid     name     namecode           ids      id      name       vid             ids
1       w          1w              11        1       w          11             11
2       s          2s              22        2       s          22              22       
3       c          3c              33        3       c          33              33      
4       d          4d              33        3       c          33              33       
3       c          3c              33        4       d          33              33     
4       d          4d              33        4       d          33              33    我想根据b表的vid字段把a 表的数据分组,结果为
select count(a.id),b.vid from a,b where a.ids=b.ids group by b.vid  
count(a.id)        ids
1                   11
1                   22
4                   33
但是下面才是我想要的结果:
count(a.id)        ids
1                   11
1                   22
2                   33
想了很久,都没想出要怎么解决,不知哪位大侠能帮帮我?

解决方案 »

  1.   

    有表a,b ,下面是一些数据
    select * from a;
    id name namecode ids
    1 w 1w 11
    2 s 2s 22
    3 c 3c 33
    4 d 4d 33select * from b;
    id name vid ids
    1 w 11 11
    2 s 22 22
    3 c 33 33
    4 d 33 33联合查询结果
    select * from a,b where a.ids=b.idsid name namecode ids id name vid ids
    1 w 1w 11 1 w 11 11
    2 s 2s 22 2 s 22 22   
    3 c 3c 33 3 c 33 33   
    4 d 4d 33 3 c 33 33   
    3 c 3c 33 4 d 33 33   
    4 d 4d 33 4 d 33 33 
    根据以上的表 33有4个,结果是4个很正常,你可以对a.id排重的话试试
      

  2.   


    select count(id),b_vid from
    (
    select a.*,b.vid b_vid from a,b where a.ids=b.ids
    minus
    null,null,null,null,null
    )
    goup by b_vid
      

  3.   

    select count(id),vid from (
    select distinct a.id,b.vid from a,b where a.ids=b.ids) group by vid
      

  4.   

    其实a表的ids和b表的ids是一样的,但是b表的vid是b表的ids的父字段,这些数据只是我举的例子,不好意思,可能表达的不清楚,我是要根据b表的父字段vid来把a表的数据分组
      

  5.   

    那即然是父段,就直接用a.ids=b.vid就行了!
      

  6.   

    a.ids=b.vid,也是这样的结果
    select count(a.id),b.vid from a,b where a.ids=b.vid group by b.vid   
    count(a.id) ids
    1 11
    1 22
    4 33