表A 内容
aID aName
1   a1
2   a2表B内容
bID aID bName
1   1   b1
2   1   b2需要得到的数据为
aID aName bCount
1   a1    2
2   a2    0即查询表B中A数据出现的次数,请问怎么实现?
谢谢了

解决方案 »

  1.   

    select a.aID,a.aName,count(*) as bCount
    from A left join B on a.aID=b.aID
    group by a.aID,a.aName.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  2.   

    select a.aID,a.aName,IFNULL(count(*),0) as bCount
    from A left join B on a.aID=b.aID
    group by a.aID,a.aName如果一定要显示0的话。.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  3.   

    由于您是新用户,所以特此介绍一下结贴的方法
    如果您问题已经得解决,请您及时结帖给分,以感谢帮助您的朋友。 结帖方法:点击版面右上方或右下方 [管理] ,进入页面后就可以输入密码,分别给分,结帖。 
     或参考:
    http://www.csdn.net/help/over.asp
    http://topic.csdn.net/u/20080110/19/7cb462f1-cac6-4c28-848e-0a879f4fd642.html
    =============================================================================
    问题解决,请及时结贴。  
     正确结贴方法:    
     管理帖子-->给分-->输入密码-->结贴.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  4.   

     不好意思,刚才回复错误,这句结果应该为0的地方得到的为1能贴一下你的测试数据和结果吗?.
        [align=center]====  ====
    [/align]
    .
    贴子分数<20:对自已的问题不予重视。
    贴子大量未结:对别人的回答不予尊重。
    .
      

  5.   


    结果如下:A表:
    +-----+-------+
    | aID | aName |
    +-----+-------+
    |   1 | a1    |
    |   2 | a2    |
    +-----+-------+B表:
    +-----+-----+-------+
    | bID | aID | bName |
    +-----+-----+-------+
    |   1 |   1 | b1    |
    |   2 |   1 | b2    |
    +-----+-----+-------+运行的SQL语句:
    select a.aID,a.aName,IFNULL(count(*),0) as bCount
    from A left join B on a.aID=b.aID
    group by a.aID,a.aName结果:
    +-----+-------+--------+
    | aID | aName | bCount |
    +-----+-------+--------+
    |   1 | a1    |      2 |
    |   2 | a2    |      1 |
    +-----+-------+--------+
      

  6.   

    终于解决了,应该改为count(b.aid),谢谢ccssddnnhelp