数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle--树的使用(Connect By)


发布日期:2023年10月02日
 
Oracle--树的使用(Connect By)

表tree

字段master

sub

sales

insert into tree values

( );

insert into tree values

( );

insert into tree values

( );

insert into tree values

( );

insert into tree values

( );

insert into tree values

( );

SQL> select * from tree;

MASTER SUB SALES

如果用树型结构表示如下:

SQL> select * from tree

start with sub=相当于普通sql的where条件

connect by prior master=sub;遍历的顺序是sub先于master遍历也就是说从sub往上遍历一直到master(根节点)

MASTER SUB SALES

SQL> select * from tree

start with master=

connect by prior master=sub; sub往上遍历至根节点(参考一下树型图)

MASTER SUB SALES

这条是自己本身也就是第一遍遍历

这是第次遍历我们从树型图可以看到往上遍历是

我们关看上面可能还是不好理解我们加入一个树结构专用函数sys_connect_by_path便于理解

SQL> select sys_connect_by_path(MASTER/) from tree master表示我遍历的起点只找在master列中存在的如下例只要为起点并以/为分割符

start with master=

connect by prior master=sub; 往根节点遍历

SYS_CONNECT_BY_PATH(MASTER/)

/主遍遍历

/主/主遍遍历

/主条master=的记录的第次遍历

/主/主条master=的记录的第次遍历

SQL> select sys_connect_by_path(MASTER/) from tree 起点为sub=时MASTER=主

start with sub=

connect by prior master=sub;

SYS_CONNECT_BY_PATH(MASTER/)

/主

/主/主

/主

/主/主

SQL> select sys_connect_by_path(MASTER/)submaster from tree

start with sub is not null

connect by prior master=sub;

SYS_CONNECT_BY_PATH(MASTER/ SUBMASTER

/主找主到根的路径这里根是主他自己

/主

/主

/主/主找主到根的路径这里根是主

/主

/主/主

/主

/主/主

/主

/主/主

select sys_connect_by_path(MASTER/)submaster from tree

start with sub is not null

connect by prior sub = master;

SYS_CONNECT_BY_PATH(MASTER/ SUBMASTER

/主

/主/主

/主/主

/主

/主/主

/主/主

/主

/主

/主

/主

上一篇:Oracle10g之ORA-32004问题

下一篇:Oracle智能代理与OMS的问题解决方法