ORACLE递归_ 树形遍历查询根节点、父节点、子节点_002

1、准备演示数据

创建表结构:

-- Create table
create table Z_ORG(  cid NUMBER,  cname   VARCHAR2(32),  parent_id  NUMBER,  create_time DATE,  org_level  NUMBER
);
-- Add comments to the table
comment on table Z_ORG  is'机构组织简化表';
-- Add comments to the columns
comment on column Z_ORG.cid  is'主键ID';
comment on column Z_ORG.cname  is'组织名称';
comment on column Z_ORG.parent_id  is'上级组织ID';
comment on column Z_ORG.create_time  is'创建时间';
comment on column Z_ORG.org_level  is'组织级别';

录入数据:

 insert into z_org(cid,cname,parent_id,create_time,org_level) select 1,'地球',0,sysdate,1 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 2,'中国',1,sysdate,2 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 3,'上海直辖市',2,sysdate,3 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 4,'江苏省',2,sysdate,3 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 5,'南京市',4,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 6,'苏州市',4,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level)select 7,'无锡市',4,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 8,'虹口区',3,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 9,'浙江省',2,sysdate,3 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 10,'杭州市',9,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 11,'宁波市',9,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 12,'美国',1,sysdate,2 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 13,'加利福尼亚州',12,sysdate,3 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level) select 14,'旧金山市',13,sysdate,4 from dual;insert into z_org(cid,cname,parent_id,create_time,org_level)select 15,'撒门市',13,sysdate,4 from dual;commit;

2、遍历根节点

1.  select  code1 from tablename  2.  start with code2  3.  connect by code3  4.  where code4

code2是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。

code3是连接条件,其中用prior表示上一条记录,比如connect by prior id=parentid就是说上一条记录的id是本条记录的parent,即本记录的父亲是上一条记录。

code4是过滤条件,用于对返回的所有记录进行过滤。

prior和start with关键字是可选项:

prior运算符必须放置在连接关系的两列中某一个的前面。**对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。**在连接关系中,除了可以使用列名外,还允许使用列表达式。start with子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。

遍历表,求得某一个节点的所有上级节点记录,比如求得撒门市的上级组织,应该获得加利福尼亚州,美国,地球这些记录,如下所示:

遍历求得根路径字符串:

3、遍历子节点

5.  select  code1 from tablename  6.  start with code2  7.  connect by code3  8.  where code4

code2是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。

code3是连接条件,其中用prior表示上一条记录,比如connect by prior id=parentid就是说上一条记录的id是本条记录的parent,即本记录的父亲是上一条记录。

code4是过滤条件,用于对返回的所有记录进行过滤。

prior和start with关键字是可选项:

prior运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。
start with子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。

如下所示,prior偏向父节点,就往下查询,查询节点下面所有的子节点记录:

如下所示,prior偏向子节点,就往下查询,查询节点下面所有的子节点记录:

–从parentid到cid开始递归,并以parentid为主展示这条记录

select t1.parentid, t1.cid, levelfrom test_category t1start with t1.parentid = 1
connect by prior t1.parentid = t1.cid;

–从parentid到cid开始递归,并以parentid为主展示这条记录

select t1.parentid, t1.cid, levelfrom test_category t1start with t1.cid = 1
connect by prior t1.parentid = t1.cid;

–从parentid到cid开始递归,并以cid为主展示这条记录

select t1.cid, t1.parentid, levelfrom test_category t1start with t1.parentid = 1
connect by t1.parentid = prior t1.cid;

–从parentid到cid开始递归,并以cid为主展示这条记录

select t1.cid, t1.parentid, levelfrom test_category t1start with t1.cid = 1
connect by t1.parentid = prior t1.cid;

转载地址:

https://blog.csdn.net/mchdba/article/details/52490664

ORACLE递归_ 树形遍历查询根节点、父节点、子节点_002相关推荐

  1. js获取树形JSON数据根节点到任一子节点路径

    js获取树形JSON数据根节点到任一子节点路径 数据结构,deep表示节点深度 现在定义一个方法传入一个子节点对象,返回其对应路径. 首先遍历数据将遍历顺序放在一个数组中![首先递归遍历数据将遍历顺序 ...

  2. zTree新增的根结点再新增子节点reAsyncChildNodes不生效解决方案

    zTree新增的根结点再新增子节点reAsyncChildNodes不生效解决方案, zTree新的根结点不能异步刷新,reAsyncChildNodes不生效解决方案, reAsyncChildNo ...

  3. 常用递归结构数据表,返会指点节点,跟其子节点的操作

    内容来自机械工业出版的仓库管理系统设计一书 表结构{WareHouserID , ParentWarehouseID } 查询指定节点跟其子节点的信息 ALTER  FUNCTION dbo.GetW ...

  4. cms 移动根节点到根节点中的子节点,根节点消失解决办法

    cms 移动根节点到根节点中的子节点,根节点消失解决办法 cms使用对应有个NetCMS数据库,找到其中NT_News_Class表,这个表就是保存栏目名称的表 select * from dbo.N ...

  5. 树形结构数据, 已知某一子节点 ,一次向上获取所有父节点

    树形结构数据, 已知某一子节点 ,一次向上获取所有父节点 //tree: 树形结构, menuid: 已知节点属性,(代码中判断id相等) function treeFindPath(tree, me ...

  6. SqlServer中递归查询父节点及其所属子节点

    SqlServer中递归查询父节点及其所属子节点 需求场景 SQL脚本实现-根据子节点查询所有的父节点 查询结果 SQL脚本实现-根据父节点查询所有的子节点 查询结果 需求场景 递归查询父节点及其所属 ...

  7. tree父节点不被选中和勾选(所以父节点)只选择子节点

    tree父节点不被选中和勾选(所以父节点)只选择子节点 t = $.fn.zTree.init(t, setting, result); var zTree = $.fn.zTree.getZTree ...

  8. zTree中父节点禁用,子节点可以用

    参考学习网址:http://www.treejs.cn/v3/main.php#_zTreeInfo zTree中父节点禁用,子节点可以用 axios.get('/base/unit/unittree ...

  9. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 构造 Xml 节点类 | 封装节点名称、节点值、节点属性、子节点 | 将封装的节点数据转为 Xml 字符串 )

    文章目录 一.构造 Xml 节点类 1.封装节点名称.节点值.节点属性.子节点 2.将封装的节点数据转为 Xml 字符串 二.Xml 节点类完整代码 一.构造 Xml 节点类 生成 Xml 数据前 , ...

  10. JavaScript里的父、子节点操作源码解析

    父.子节点操作.兄弟节点 1.节点概述 <!DOCTYPE html> <html lang="en"><head><meta chars ...

最新文章

  1. c语言药房系统书写指导书,C语言药房管理系统[文书借鉴]
  2. python设置文件权限_PYTHON学习之文件操作;
  3. mongdb 群集_通过对比群集分配进行视觉特征的无监督学习
  4. 带有Gluon Ignite和Dagger的JavaFX中的依赖注入
  5. Hawtio和Apache JClouds
  6. Ubuntu 12.04 LTS安装VMware Tools:无法找到kernel header path的问题
  7. 详解Java中ArrayList、Vector、LinkedList三者的异同点
  8. Linux修改主机名称
  9. PHP中获取CHECKBOX提交的内容及checkbox全选
  10. python内存分配失败_关于python:如何避免[Errno 12]无法分配使用子进程模块导致的内存错误...
  11. 率辉c语言,C语言真题
  12. python flag用法_python flag什么意思
  13. 发送速率(传输速率)和传播速率
  14. Mac 快速查找快捷键command+f失效解决办法
  15. 出走的门徒之四:丰元创投朱会灿:冒险的牧师
  16. day1-python猜单词游戏
  17. shell学习整理笔记
  18. 基于ODX 的诊断应用软件
  19. excel导入mysql并批量查询_Excel导入MySql数据库批量操作
  20. 【技术案例】智能语音CAEDemo程序

热门文章

  1. 亭台六七座,八九十枝花——python正则表达
  2. 配置vue前端服务器及express服务器端的服务器同时运行——concurrently
  3. sir节点matlab模型,SIR模型实现(matlab)
  4. 【论文写作】毕业论文降重技巧
  5. 基于JavaSpringMvc+mybatis实现学生信息管理系统
  6. 淘淘商城第17讲——引用Dubbo服务
  7. 实用网站推荐——office模板(PPT)
  8. 学计算机打字重不重要,怎么才能有效的学好电脑打字
  9. java 生成kml文件_java使用dom4j解析大量坐标点的kml文件
  10. 班级信息管理c语言代码,C语言班级信息管理系统(有详细代码).doc