Start with connect by prior
在SELECT命令中使用CONNECT BY和蔼START WITH子句可以查询表中的树型结构关系。其命令格式如下:
SELECT。。。
CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR列名2}
[START WITH];
其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。
Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
创建示例表:
CREATE TABLE TBL_TEST
(
ID NUMBER,
NAME VARCHAR2(100 BYTE),
PID NUMBER DEFAULT 0
);
插入测试数据:
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
从Root往树末梢递归
select * from TBL_TEST
start with id=1
connect by prior id = pid
order by pid
从末梢往树ROOT递归
select * from TBL_TEST
start with id=5
connect by prior pid = id
order by id
**************************************************************************
CREATE TABLE xxuts_test_start
(
ID varchar2(100),
NAME VARCHAR2(100)
);
select id,name,level from xxuts_test_start
start with id='A'
connect by prior name=id
order by id
id name level
A B 1
A C 1
A D 1
B E 2
B F 2
C H 2
E G 3
***************************************************************
SELECT transaction_id,
primary_quantity,
primary_unit_of_measure,
source_doc_unit_of_measure,
transaction_type,
parent_transaction_id
FROM rcv_transactions
WHERE invoice_status_code <> 'INVOICED'
-- added trx date range as per gap228 -- rsk 07/12/07
/* AND TRUNC (transaction_date)
BETWEEN TRUNC (NVL (to_date('20080601','YYYYMMDD'), transaction_date))
AND TRUNC (NVL (to_date('20080620','YYYYMMDD'), transaction_date))*/
START WITH transaction_id = 276195
CONNECT BY parent_transaction_id = PRIOR transaction_id;
**************************************************
SELECT transaction_id
--INTO l_rcv_transaction_id
FROM rcv_transactions
WHERE transaction_type = 'RECEIVE'
START WITH transaction_id = 116231
CONNECT BY transaction_id = PRIOR parent_transaction_id;
分享到:
相关推荐
总之,Oracle的递归树形结构查询功能是处理层次数据的强大工具,能够有效地支持组织结构、树状分类等业务场景。通过熟练掌握这一特性,开发者可以在数据库层面高效地解决复杂的数据查询问题,减少应用程序的负担。
首先,要了解的是,在Oracle中,树形结构数据的查询主要依赖于START WITH...CONNECT BY PRIOR语句。这种查询方式允许用户指定起始节点(根节点),并通过CONNECT BY子句定义父子节点之间的递归关系。这种方式特别...
在`Oracle中的树状查询(递归查询) - 鱼与飞鸟 - CSDNBlog.htm`这篇博客中,作者通过具体的实例详细讲解了如何在权限查询中使用递归查询,包括如何建立树形结构,以及如何避免无限递归等问题。 8. **补充资源** - ...
Oracle中的树形结构查询,也被称为层次查询或hierarchical retrieval,是一种获取树形结构数据的方法。这种方法可以将数据组织成树形结构,具有层次关系的报表。树形结构的数据集合存在于我们日常生活中的很多地方,...
最近项目中遇到,开始不太了解,现在分享一下,希望可以帮助其他人
### Oracle树状结构查询原理 树状结构查询主要依赖于`START WITH`和`CONNECT BY PRIOR`这两个关键语法。`START WITH`用于指定查询的起始节点,而`CONNECT BY PRIOR`则定义了节点之间的关系,从而实现对树状结构的...
oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询
Oracle 数据库树形结构用法总结,例如SYS_CONNECT_BY_PATH 、START WITH . . . CONNECT BY . . .等具体语法介绍
总之,Oracle数据库支持对树形结构数据的高效查询,通过`CONNECT BY`和`START WITH`子句,我们可以轻松地构建和遍历这些层次关系,这对于理解和操作复杂的数据结构至关重要。在进行树结构查询时,理解这些语句的工作...
Oracle 数据库在处理树形数据结构时,提供了一种强大的查询方法,即 `SELECT...START WITH...CONNECT BY...PRIOR` 语法。这种查询模式允许我们以递归方式遍历和检索具有层级关系的数据,例如组织结构、产品分类或者...
在Oracle数据库中,将查询结果转化为树状结构是一项高级而实用的技能,尤其适用于处理具有层级关系的数据,如产品分类、组织架构等。本篇将深入解析如何利用Oracle的特定功能,实现数据的树状展示。 ### 核心概念:...
Oracle通常使用自连接来模拟树形结构,即通过一个表中的字段引用自身来建立层级关系。例如,一个"员工"表中,"上级员工ID"字段可以引用"员工ID"字段,形成上下级关系,从而构建出组织结构的树状模型。 查询树结构...
本主题将深入探讨如何在Oracle中利用树形结构以及如何结合dtree插件来显示树状结构菜单。 首先,Oracle中的树形结构通常通过递归关系或层次查询来实现。例如,员工组织结构、产品分类或地理区域等都是常见的层次化...
在IT行业中,动态树形菜单是一种常见的用户界面元素,它能以树状结构展示数据,使得用户能够方便地浏览和操作层次化的信息。本项目利用Ajax、JSP和Oracle数据库技术,实现了这样一个功能,让我们来深入探讨一下这些...
在Oracle数据库中,进行树状结构数据查询时,通常会使用到特定的查询语法,包括`START WITH`、`CONNECT BY PRIOR`等关键字。本文将详细介绍这些关键字及其应用场景,并通过具体示例来帮助理解。 #### 一、基本概念 ...
在Oracle数据库管理中,处理树形结构数据是一项常见需求。本文将详细介绍如何通过PL/SQL过程实现在Oracle数据库中复制树状节点,并将其作为一个新的树节点进行插入。 #### 1. 创建树形表结构 首先,我们需要创建一...
在Oracle中,树查询主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`语法,这个语法让我们能够按照层级结构遍历数据。本文将深入探讨这个语法以及与之相关的函数,并通过实例来说明它们的用法。 首先,我们...
递归子查询可以通过嵌套的SELECT语句实现,但这种方式在Oracle中通常效率较低,不推荐用于大量数据的树状查询。示例如下: ```sql WITH RECURSIVE tree AS ( SELECT id, parent_id, name FROM department WHERE ...
Oracle+level树形查询学习所需
在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...