select A.id,(select count(AA.aaid) from aa where AA.id = A.id),(select count(ab.aaid) from ab where ab.id = A.id)
from A group by A.id

解决方案 »

  1.   


    left  join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
    所以统计出来是5条记录
    用子查询处理就可以了
      

  2.   

    按照zqllyh(学习Stupid As Pig中...)大蛱的方法已作出来啦:)不过我的查询比较复杂,有近20个参数,且要根据参数判断进行左连接还是右连接,有三个表的不同字段是分组条件,查询起来感觉有点慢了,另一种方法是先把AA中的统计出来生成一个临时表,里边有AB表统计的空字段,然后定义游标统计AB中的数据更新这个临时表,最后从临时表中检索数据,大家看一下哪种方法效率高一点,或算法好一点,谢谢!
      

  3.   

    TRY:select A.id,aaa.aacount,bbb.abcount
    from a left join
    (select aaid,count(*) as aacount from aa group by aaid)aaa
    on a.id=aaa.aaid left join 
    (select abid,count(*) as abcount from ab group by abid)bbb
    on a.id=bbb.abid
      

  4.   

    那再在上面的查询中加一项就是从AB中检索sum(AB.cost) group by AB.CostType,且CostType允许为空呢,该如何解决?大概的意思就是select A.id,count(AA.aaid),count(AB.abid),sum(AB.cost)
    from A left join AA on AA.id = A.id
        left join AB on AB.id = A.id
    group by A.id,AB.CostType
    //注:这句肯定是错的,只是让大家理解一下我的想法:)谢谢!
      

  5.   

    还没搞定,进一步讲,就是我要按CostType分组,但不出现A.id,且能使用AB中的字段做为检索条件,该如何做啊,请各位帮忙,谢谢!