现有3个表:
信息表:info{id, org_id}
信息类型表:type{info_id, type_id}
单位代码表:org{id, name}
描述:一个单位对应报送一条信息,而一条信息可以是属于多个信息类型。也即info与org是一对一的关系,info与type是一对多的关系。
要求:统计每个单位报送的信息数和每个单位报送的信息中,再按信息类型统计。效果图如下:单位      总数       信息类型      总数 
单位1        2        类型1        1  
                    类型2        2
单位2       3        类型1       3我的SQL语句:select orgId, c.type_id, count(*) as typeCount from info a left join type b left join org c where a.id=b.info_id and  a.org_id=c.id group by a.org_id,b.type_id
先按单位统计再按类型统计,这样得出来的typeCount是每个信息类型的统计数(正确的)。
接下来我遍历查询结果,把每个单位报送上来的所有信息类型的统计数相加后,便得到了单位的统计数,可是这样算出来的结果是不正确的,因为如果一条信息分属两个或多个信息类型的话,那相加后的结果会比实际数据多出一条,相当于这条信息统计了两次。
各位大侠,有没有更好的办法把重复的数据去掉呀。