请教大家一个问题:我有两个数据表 banjixxb和xueshengxxbbanjixxbbanjibh  banjimc    
-------  -----------
ds01     电算1班
ds02     电算2班
ds03     电算1班
xueshengxxbbanjibh  xuehao     xingming   xingbie
-------  ---------  --------
ds01     0001       扎三       男
ds01     0002       天三       女
ds02     0003       王武       女
如何实现如下查询结果:
banjibh   banjimc    banjirs
-------  ---------   -------
ds01     电算1班     2
ds02     电算2班     1
ds03     电算1班     0

解决方案 »

  1.   

    定义一张表
    有三个字段
    班级编码,班级名称,人数insert into a(班级编码,人数)
    select banjibh,count(distinct xuehao)
    from xueshengxxb
    group by banjibh第一,三咧就有了,
    地二列update 一下就行了吗
    你应该会的
      

  2.   

    我不想增加表,人数只想动态统计出来,而且只用一条sql语句。
      

  3.   

    select banjibh,banjimc,banjirs=(select count(*) from xueshengxxb where xueshengxxb.banjibh=banjixxb.banjibh)   from banjixxb
    搞定,给分吧
      

  4.   

    SELECT banjibh , banjimc , Count(*) AS banjirs
    FROM banjixxb LEFT OUTER JOIN xueshengxxb
    ON banjixxb.banjibh = xueshengxxb.banjibh
    GROUP BY banjibh , banjimc注这里用Left是左关联,意思是以左边的表为主,这样就不会漏数据了
      

  5.   

    select banjibh,banjimc,banjirs=(select count(*) from xueshengxxb where xueshengxxb.banjibh=banjixxb.banjibh)   from banjixxb
      

  6.   

    感谢各位,在各位的指点下,我发现在oracle中应该这样写:SELECT banjibh , banjimc , Count(xueshengxxb.xuehao)  banjirs
    FROM banjixxb , xueshengxxb
    where banjixxb.banjibh = xueshengxxb.banjibh(+)
    GROUP BY banjibh , banjimc
      

  7.   

    各位,能不能更进一步,实现如下效果:banjibh   banjimc    banjirs  nansheng(男生人数)
    -------  ---------   -------  --------
    ds01     电算1班     2        1
    ds02     电算2班     1        1
    ds03     电算1班     0        0