当前位置: 代码迷 >> Oracle管理 >> 两表间的分组统计解决方法
  详细解决方案

两表间的分组统计解决方法

热度:192   发布时间:2016-04-24 04:09:28.0
两表间的分组统计
表1
名称:modul(论坛模块表)
字段:mid, name,type    // type值代表两种类型:1,父模块,2字模块

表2
名称:post(帖子表)
字段:pid,pname,mid (论坛模块表的mid)

现在是要统计 父论坛模块 下的贴子数量。父论坛模块帖子数 = 父模块 + 子模块

用sql语句该怎么查询啊????
------解决思路----------------------
前面语句有问题,是固定两层吗?

select a.mid,a.name,a.type,count(1)
from modul a,post b
where a.mid=b.mid or a.mid=b.pid
group by a.mid,a.name,a.type


------解决思路----------------------
表设计不合理,一般父子关系
名称:modul(论坛模块表)
字段:mid, name,parentmid 
1,aa,0
2,ab,1
3,ac,1
4,aba,2 
5,ba,0
6,bb,5
表2
名称:post(帖子表)
字段:pid,pname,mid (论坛模块表的mid)
1,paa1,1
2,paa2,1
3,pab1,2
4,pac1,3
5,pac2,3
6,pac3,3
7,paba1,4
8,pba1,5
9,pba2,5
查aa模块下的所有帖子数:
oracle:
select count(*) as cnt
  from (select t.*
          from modul t
         start with t.name = 'aa'
        connect by prior t.mid = t.parentmid) x
 inner join post s on x.mid = s.mid;
  相关解决方案