left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null 所以统计出来是5条记录 用子查询处理就可以了
按照zqllyh(学习Stupid As Pig中...)大蛱的方法已作出来啦:)不过我的查询比较复杂,有近20个参数,且要根据参数判断进行左连接还是右连接,有三个表的不同字段是分组条件,查询起来感觉有点慢了,另一种方法是先把AA中的统计出来生成一个临时表,里边有AB表统计的空字段,然后定义游标统计AB中的数据更新这个临时表,最后从临时表中检索数据,大家看一下哪种方法效率高一点,或算法好一点,谢谢!
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
那再在上面的查询中加一项就是从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 //注:这句肯定是错的,只是让大家理解一下我的想法:)谢谢!
left join 第一张表的连接列在第二张表中没有匹配是,第二张表中的值返回null
所以统计出来是5条记录
用子查询处理就可以了
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
from A left join AA on AA.id = A.id
left join AB on AB.id = A.id
group by A.id,AB.CostType
//注:这句肯定是错的,只是让大家理解一下我的想法:)谢谢!