oracle 树状查询
来源:互联网 发布:unity3d 点击物体 编辑:程序博客网 时间:2024/06/07 06:33
connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start with 条件1
connect by 条件2
where 条件3;
例:
select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中:
条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
条件3 是过滤条件,用于对返回的所有记录进行过滤。
简单介绍如下:
早扫描树结构表时,需要依此访问树结构的每个节点,一个节点只能访问一次,其访问的步骤如下:
第一步:从根节点开始;
第二步:访问该节点;
第三步:判断该节点有无未被访问的子节点,若有,则转向它最左侧的未被访问的子节,并执行第二步,否则执行第四步;
第四步:若该节点为根节点,则访问完毕,否则执行第五步;
第五步:返回到该节点的父节点,并执行第三步骤。
总之:扫描整个树结构的过程也即是中序遍历树的过程。
1. 关于PRIOR
运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。
PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,即由父节点向子节点方向通过树结构,我们称之为自顶向下的方式。如:
CONNECT BY PRIOR EMPNO=MGR
PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,即由子节点向父节点方向通过树结构,我们称之为自底向上的方式。例如:
CONNECT BY EMPNO=PRIOR MGR 或者 CONNECT BY PRIOR MGR=EMPNO
在这种方式中也应指定一个开始的节点。
转载:http://www.blogjava.net/hwpok/archive/2010/04/07/317649.html
- 【Oracle】树状结构查询
- Oracle树状数据查询
- Oracle 树状查询
- oracle 树状查询
- oracle 树状查询
- oracle 树状查询
- 【Oracle】树状结构查询
- oracle 树状查询
- Oracle中的树状查询(递归查询)
- oracle 树状查询,查询根节点
- 浅谈oracle树状结构层级查询
- Oracle中使用connect by 来实现树状查询
- oracle数据库树状或者层次结果集的查询
- MYSQL树状查询
- [层次结构|树状结构] oracle中用start with...connect by prior子句实现递归查询
- oracle之树状结构的存储与展示(递归查询)
- 使用oracle 9i 里的层级查询(Hierarchical Queries)实现树状表结构的递归数据查询
- MySql的递归树状查询
- 学习笔记------数据结构(C语言版) 扩展的线性单链表及归并
- 源码分析异步消息处理线程机制(Looper MessageQueue Handler Message)
- Android EventBus在Fragment中不起作用的解决方法
- iOS 【Multithreading-创建线程的方式/线程状态(了解)】
- poj2063Investment【完全背包】
- oracle 树状查询
- 关于android内存泄露那点事
- OC-1面试题
- IOS开发-几种截屏方法
- 可变参数求和
- Android平台下轻量级http网络传输库
- idea功能attach source
- realloc()使用中的需要注意的问题
- 【HDU】 1247 Hat’s Words