oracle树形父子关系递归检索
2012-12-17 19:44
246 查看
1、初始化数据
id parent_id
1
2 1
3 1
4 2
5 2
6 4
7 4
8
9 8
create table connect_table (ID int, PARENT_ID int);
insert into connect_table (ID, PARENT_ID)
values (1, null);
insert into connect_table (ID, PARENT_ID)
values (2, 1);
insert into connect_table (ID, PARENT_ID)
values (3, 1);
insert into connect_table (ID, PARENT_ID)
values (4, 2);
insert into connect_table (ID, PARENT_ID)
values (5, 2);
insert into connect_table (ID, PARENT_ID)
values (6, 4);
insert into connect_table (ID, PARENT_ID)
values (7, 4);
insert into connect_table (ID, PARENT_ID)
values (8, null);
insert into connect_table (ID, PARENT_ID)
values (9, 8);
2、分析
这个表是2棵树,2个根节点分别是 id=1 or id =8
connect by prior id=parent_id -----自根节点开始便利到叶子节点
start with id =? ----选一个根,则查询出该root的所有分支和叶子
3、适用场合举例
查询id=8是否为id=1的分支或叶子,是返回y,否返回n。
select t.*, level from connect_table t connect by prior id =parent_id start with id=1; ---显示level
select decode(count(1), 0, 'n', 'y')
from dual
where 8 in (select id
from connect_table t
connect by prior id = parent_id
start with id =1);
id parent_id
1
2 1
3 1
4 2
5 2
6 4
7 4
8
9 8
create table connect_table (ID int, PARENT_ID int);
insert into connect_table (ID, PARENT_ID)
values (1, null);
insert into connect_table (ID, PARENT_ID)
values (2, 1);
insert into connect_table (ID, PARENT_ID)
values (3, 1);
insert into connect_table (ID, PARENT_ID)
values (4, 2);
insert into connect_table (ID, PARENT_ID)
values (5, 2);
insert into connect_table (ID, PARENT_ID)
values (6, 4);
insert into connect_table (ID, PARENT_ID)
values (7, 4);
insert into connect_table (ID, PARENT_ID)
values (8, null);
insert into connect_table (ID, PARENT_ID)
values (9, 8);
2、分析
这个表是2棵树,2个根节点分别是 id=1 or id =8
connect by prior id=parent_id -----自根节点开始便利到叶子节点
start with id =? ----选一个根,则查询出该root的所有分支和叶子
3、适用场合举例
查询id=8是否为id=1的分支或叶子,是返回y,否返回n。
select t.*, level from connect_table t connect by prior id =parent_id start with id=1; ---显示level
select decode(count(1), 0, 'n', 'y')
from dual
where 8 in (select id
from connect_table t
connect by prior id = parent_id
start with id =1);
相关文章推荐
- oracle 树形结构单表 查询 递归SQL
- oracle树形结构由子节点递归得到父节点
- oracle递归树形结构获取所有父节点,子节点
- ORACLE SQL 所有上级组织和所有下属组织 (递归检索)
- oracle树形结构由子节点递归得到父节点
- ORACLE 树形结构数据 查询某结点下全部子节点无限递归的前2个数据
- oracle树形结构由子节点递归得到父节点
- [DB][OARCLE]Oracle中树形数据(父子项数据)检索的CONNECT BY PRIOR 递归算法
- oracle树形结构由子节点递归得到父节点
- Oracle 语句递归查找父子关系语句
- MySql的sql语句中添加存储过程或者存储函数来实现Oracle中的start with ……connect by prior……递归(树形结构数据)查询
- MySQL中树形递归检索
- Oracle递归排序 父子关系排序
- oracle 递归 树形结构数据查询
- SQL Sever 2008和Oracle 10g sql语句的区别:递归、拼音排序
- Oracle中的递归总结
- SQL 递归写法 (oracle+db2)
- oracle递归方法迭代数据
- 堆栈 and 递归 获取无限极树形菜单
- MySQL 模拟Oracle邻接模型树形处理