oracle 树结构数据层次分列显示
来源:互联网 发布:linux 线程同步机制 编辑:程序博客网 时间:2024/05/28 09:33
在实际应用中, 树结构数据的应用是很广泛的, 如书的目录结构, 组织部门的分级等!!!!!
如一本书的目录
如果我们想要一次统计一些东西, 但是要分 目录, 章,节,回 ! 相关的东西只和回有直接的关系!
那我们的数据就必须是这样的
A 对应 第一章第二节第三回, 转换为: A 第一章, 第二章第二节, 第一章第二节第三回 这样就行了!!!
oracle 有专门的方法展现树数据, 这个相对其他类型的数据库方便很多!!!
select tt.code, tt.name,tt.p_code, code_path,name_path, regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,1) lev1_code, regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,1) lev1_name, regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,2) lev2_code, regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,2) lev2_name, regexp_substr(code_path,'[^/]+[A-Za-z0-9_]*',1,3) lev3_code, regexp_substr(name_path,'[^/]+[A-Za-z0-9_]*',1,3) lev3_name from (select t.*,level,CONNECT_BY_ROOT code as root,CONNECT_BY_ISLEAF , SYS_CONNECT_BY_PATH (code, '/') code_path, SYS_CONNECT_BY_PATH (name, '/') name_pathfrom book_mulu t START WITH p_code='0' CONNECT BY NOCYCLE t.p_code = PRIOR t.code) tt
我这里是用到了oracle 的connect by 这个语法, 网上很多资料的.
要从树的上面往下查, 还是树的下面往上查呢, 这个关键字 Prior(优先的) 的位置就是关键了!!! 男士女士, 女士优先, 那么男士 女士prior, 女士占有prior. 所以, 从树的上面往下查, 下面的优先, 所以prior 给code; 树的下面往上查, 上面的优先, prior 给p_code, 这样就很容易理解了!!! NOCYCLE 是针对环状循环的问题数据的!!!
level, connect_by_root, connect_by_isleaf, CONNECT_BY_ISCYCLE 这四个是connect by 语法中特有的关键字, 可能还有其他的, 我暂时不清楚!!!
level 是树的级数, 从1开始!(这里的树指查询出来的数据树,该数据树可能是整棵树的一部分而已);
connect_by_root 是树的首节点;
connect_by_isleaf 是指当前节点是否为叶子, 1 是; 0 否;
CONNECT_BY_ISCYCLE 如果在当前行中引用了某个父亲节点的内容并在树中出现了循环, 会显示“1”; 否则就显示“0”;
sys_connect_by_path 函数, 可能在一些行列转换的处理中,大家就使用过了, 很好的一个函数, 能把树的目录层次串联起来!!!!
如 SYS_CONNECT_BY_PATH (name, '/') 结果就是: 第一章/第二节/第三回.
有了这些, 我们再对数据进行整合, 在有明确层次树的情况下, 再结合一些oracle 的字符串函数, 就很方便地把层次分列了!
- oracle 树结构数据层次分列显示
- 数据分列显示:
- html 显示层次结构
- 显示层次结构
- Repeater分行分列显示
- Repeater控件分列显示
- ListView分列显示
- 递归显示视图层次结构
- 递归显示视图层次结构
- ORACLE中的层次结构查询
- Flex从后台读取数据前台显示为层次的树形结构
- Reapter控件里分列显示
- WTL分列显示的ListBox
- WTL分列显示的ListBox
- smarty中进行分列显示
- repeater 分列显示 以及布局
- 网页中<li>分列显示
- Starling中显示类型继承层次结构
- 英语口语场景-----问路篇
- js正则积累
- 前端开发利器—FIDDLER
- Web图表开发-用ChartDirector画极线图
- WCF学习(一):实例
- oracle 树结构数据层次分列显示
- MIPS 平台下 I/O 端口的读写--以龙芯为例
- Android之Adapter用法总结
- 作业调度框架 Quartz 学习笔记(六) -- job生病了(抛出异常)时的处理
- Ext.net 常见问题整理
- Warning: $HADOOP_HOME is deprecated. 关闭
- MTK wifi 驱动相关
- 内核定时器操作
- pandaboard 跑 android 4.0.4