六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 26|回复: 0

树形结构查询的2种问题

[复制链接]

升级  29.33%

22

主题

22

主题

22

主题

秀才

Rank: 2

积分
94
 楼主| 发表于 2013-2-4 19:18:07 | 显示全部楼层 |阅读模式
      金融机构中存在大量的金融产品,这些产品有很多级层次关系。形成了树形的结构。以往这种树形结构的存储方式采用PARENT_NODE的方式进行存储,可以利用oracle的递归函数查询一个节点的所有上级或者下级节点。
数据示意图如下:



 
 
     问题1:树形结构的层级关系不定,对任意级别的节点进行树形结构的汇总。如对A、B、C节点进行汇总数据,但是选择A、B、C不定所以不能把sql写死,比如先汇总C再汇总B。可以利用oracle的CONNECT_BY_ROOT,得到每个节点的根节点,这样就可以按照root节点进行group by了。
    
select level, connect_by_root parent,child, parent from hier

start with id='B'

connect by prior hier.child = parent;


 

 
     问题2:对各级树形结构的节点需要进行汇总,通常见于机构的汇总中
 
      可以先排序根据level,先汇总C节点,然后再汇总B、A然后是ROOT。
当汇总ROOT的时候它的子节点都已经汇总完毕了。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表