600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > ORACLE 树形遍历查询根节点 父节点 子节点

ORACLE 树形遍历查询根节点 父节点 子节点

时间:2019-11-05 09:10:15

相关推荐

ORACLE 树形遍历查询根节点 父节点 子节点

1、准备演示数据

创建表结构:

录入数据:

2、遍历根节点

1. selectcode1fromtablename

2. startwithcode2

3. connectbycode3

4. wherecond3

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

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

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

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

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

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

遍历求得根路径字符串:

3、遍历子节点

5. selectcode1fromtablename

6. startwithcode2

7. connectbycode3

8. wherecond3

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

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

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

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

prior运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。

start with子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。

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

如下所示E:\u\oracle\problem\pic\52.png:

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

执行结果如下所示E:\u\oracle\problem\pic\51.png:

4、扩展研究

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

select t1.parentid, t1.cid, level

from test_category t1

start with t1.parentid = 1

connect by prior t1.parentid = t1.cid

;

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

select t1.parentid, t1.cid, level

from test_category t1

start with t1.cid = 1

connect by prior t1.parentid = t1.cid

;

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

select t1.cid, t1.parentid, level

from test_category t1

start with t1.parentid = 1

connect by t1.parentid = prior t1.cid

;

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

select t1.cid, t1.parentid, level

from test_category t1

start with t1.cid = 1

connect by t1.parentid = prior t1.cid

;

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!/jiangjunshow

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。