转载自:http://community.csdn.net/Expert/topic/4998/4998917.xml?temp=.2047846
表结构如下:
该表只有两个字段,PNODE,NODE,PNODE为NODE父结点,当该节点无子节点时,PNODE=NODE
要求给定父结点,查出所有子节点,子孙节点......
如:
PNODE NODE
1 2
2 3
2 4
3 3
4 4
要求给定PNODE=1,给出结果为:
2
3
4
如果是10G以上的可以用NOCYCLE 去掉循环的影响
....
start with PNODE = 1
connect by NOCYCLE prior NODE = PNODE
....
10G以下的可以试试:
start with PNODE = 1
connect by prior NODE = PNODE
where NODE <> PNODE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
SQL> create table tab_a (pnode number(2),node number(2));
Table created
SQL> insert into tab_a values (1,2);
1 row inserted
SQL> insert into tab_a values (2,3);
1 row inserted
SQL> insert into tab_a values (2,4);
1 row inserted
SQL> insert into tab_a values (3,3);
1 row inserted
SQL> insert into tab_a values (4,4);
1 row inserted
SQL> commit;
Commit complete
----- oracle9i的: 构造tab 以避免循环
SQL> with
2 tab as (
3 select pnode,decode(node-pnode,0,null,node) node
4 from tab_a
5 )
6 select distinct pnode
7 from tab
8 where pnode >1
9 start with pnode=1
10 connect by prior node=pnode;
PNODE
-----
2
3
4
分享到:
相关推荐
oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称
### Oracle中的递归查询详解 #### 一、引言 在数据库管理中,处理具有层次结构的数据是一项常见的任务。例如,在组织结构、产品分类或文件系统等场景中,经常需要查询这种类型的层级数据。Oracle数据库提供了强大...
反之,如果当前行是子行,则PRIOR column_name指向下一次递归中的column_name值。树结构表的递归查询可以用来检索组织结构、分类目录、流程跟踪等层级数据。 MSSQL中实现递归查询的方式不同于ORACLE。在MSSQL中,...
这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...
Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...
在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于处理具有层次结构的数据,例如组织结构图、文件...
oracle递归查询
这是Oracle递归查询的关键部分。`connect by`子句定义了层次之间的连接规则。在这里,`prior`关键字用来引用上一层的值,即父节点的`parent_id`应该等于当前行的`id`,这样我们就沿着父到子的方向遍历树。 3. `...
oracle 如何递归查询父子关系。经常用于构造树结构
本文将深入探讨Oracle中的树状查询(递归查询)及其应用。 1. **递归查询原理** 递归查询基于`CONNECT BY`子句,它允许我们定义一个起始点并根据特定条件进行递归。`PRIOR`关键字用于指定当前行与父行的关系。通过...
### Oracle递归查询详解 #### 一、引言 在处理具有层级结构的数据时,递归查询是一项非常有用的技能。例如,在处理组织架构、产品分类等数据时,我们经常需要查询某一节点及其所有子节点或者从某个节点追溯到其根...
在 Oracle 中,递归函数可以使用 CONNECT BY 语句来实现递归查询。CONNECT BY 语句的基本语法如下所示: ```sql SELECT ... FROM ... START WITH ... CONNECT BY ... ``` 其中,`START WITH` 子句指定了递归查询的...
描述中提到,使用Oracle递归查询比在程序中实现递归查询速度更快。这是因为数据库系统通常针对这类操作进行了优化,能够更高效地处理层次结构数据。此外,数据库可以利用索引和其他优化技术,提高查询速度。而在应用...
在Oracle中,对树的递归查询主要依赖于`CONNECT_BY`功能。`CONNECT_BY`是Oracle SQL的一个扩展,用于处理层次查询。它允许我们通过指定的连接条件来遍历层级数据,从而进行递归查询。例如,我们可以用以下方式查询一...
在Oracle数据库中,递归查询是一种强大的工具,用于处理层级数据结构,如组织结构、文件系统或树形关系。在本篇文章中,我们将探讨如何利用递归查询来查找父子兄弟节点,这对于理解和处理这类关系非常关键。 首先,...
以下是在Oracle中进行递归查询的例子: ```sql SELECT id, name, CONNECT_BY_ROOT id AS root_id FROM employees START WITH id = some_employee_id CONNECT BY PRIOR id = manager_id; ``` 六、注意事项与优化 1....
在SQL Server 2005中,递归查询使用的是`WITH`子句配合`UNION ALL`,其基本思想与Oracle类似,只是语法有所不同。例如,找出1号节点的所有子节点的查询如下: ```sql WITH my1 AS ( SELECT * FROM aaa WHERE id = ...
MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 第一种方法:使用函数来...
在Oracle数据库中,SQL递归查询是一种非常有用的工具,它允许我们处理层级关系的数据,例如组织结构、树形目录或有上下级关联的数据。本文将详细介绍如何在Oracle中使用SQL递归语句,并通过示例进行说明。 首先,...