Oracle 10g 中的递归查询(树型查询)
一、树型表结构:
节点ID 上级ID 节点名称
二、公式:
select 节点ID,节点名称,level
from 表
connect by prior 节点ID=上级节点ID
start with 上级节点ID=节点值
说明:
1、常见的树形结构为公司组织机构、地区……
2、求节点ID以上的结构,或以上的结构,将“节点ID=上级节点ID”左右顺序换一下即可。
3、Level为Oracle的特殊字段,表示“层”的意思。当前节点ID的下一层节点为“1”。
测试SQL: 1,建立表结构
create table Dept(
DepartNO varchar2(10),
DepartName varchar2(20),
TopNo varchar2(10)
);
插入数据:
insert into Dept values('001',' 董事会','0');
commit;
insert into Dept values('002','总裁办 ','001');
commit;
insert into Dept values('003','财务部 ','001');
commit;
insert into Dept values('004','市场部 ','002');
commit;
insert into Dept values('005','公关部 ','002');
commit;
insert into Dept values('006','销售部 ','002');
commit;
insert into Dept values('007','分销处 ','006');
commit;
insert into Dept values('008','业务拓展处','004');
commit;
insert into Dept values('009','销售科','007');
commit;
1,向前查 (从查询本身一直到最上面的机构)
比如:
select distinct departno,departname,level
from dept
connect by prior topno=departno
start with
departno='005';
2,向后查:(从查询本身一直到最下面的机构)
select distinct departno,departname,level
from dept
connect by prior departno=topno
start with
topno='001';
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID(比如根记录)是(下一条)本条记录的PRAENTID,即本记录的父亲是上一条记录。
发表评论
-
Oracle plsql后台程序建议
2011-03-02 12:03 696个人改进建议: 1、游标取数时,采用批量取数的方法: ... -
oracle10g 的一个问题
2011-03-02 11:39 640oracle10g 的一个问题: 创建主键的时候, 默 ... -
Oracle视图使用
2011-02-15 17:13 0Oracle视图使用经验谈: 1、如果视图仅仅是 ... -
PLSQL 中Merge into和Update的用法
2011-01-27 01:31 1478在oracle 中有个语法:merge 用法如下: ... -
Oracle培训的总结
2011-01-27 01:30 698前段时间,因为要升级系统到Oracle环境,公司请了一位在 ... -
Oracle 培训材料
2011-01-27 01:29 626前段时间给公司做个Oracle培训,一直在学oracl ... -
Oracle 简单的SQL调优
2011-01-27 01:27 728今天刚看到一篇简单的SQL调优,自己也试了一下优化。原文如下: ... -
PL/SQL最差实践
2011-01-27 01:15 5661. 超长的PL/SQL代码 影响:可维护性,性能 ... -
大表变小表,小表再连接————记一次PL/SQL优化过程
2011-01-27 01:12 1244公司的业务系统中存在一个大的日志表,表大约是这样:cre ... -
高效的PL/SQL程序设计--批量处理
2011-01-27 00:59 612批量处理一般用在ETL操作, ETL代表提取(extract) ... -
PL/SQL用户指南与参考--PL/SQL应用程序性能调优(转)
2011-01-27 00:57 624PL/SQL应用程序性能调优 <!-- Instanc ... -
PLSQL 中Merge into和Update的用法
2011-01-18 20:42 1280这两天一直在处理关于SQL server存储过程转换到Orac ... -
PL/SQL优化
2011-01-18 19:51 826PL/SQL优化 注:O代表比X 更优化的写法。 以 ... -
Oracle SQL 内置函数大全
2009-03-25 21:25 607SQL中的单记录函数 1.ASCI ... -
PL/SQL中用光标查询多条记录
2009-03-25 21:19 732一、 什么是光标 Oracle ... -
PL/SQL开发中动态SQL的使用方法
2009-03-25 21:11 1118一般的PL/SQL程序设计中,在DML和事务控制的语句中可 ...
相关推荐
Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...
在 Oracle 10g 中,引入了新的伪列函数 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF 和 CONNECT_BY_ISCYCLE,以增强层次查询的能力。 CONNECT_BY_ROOT 函数可以用来获取当前行的根节点,例如: ```sql SELECT CONNECT_BY_...
在Oracle数据库中,树型结构的数据模型是一...总的来说,处理Oracle中的树型结构寻父或寻子操作,需要掌握递归查询、索引优化、事务管理等多方面的技术。理解并熟练运用这些技巧,将使你在处理层级数据时更加得心应手。
在MySQL中,没有内置的递归查询语句,通常需要借助存储过程或存储函数来实现树型数据的遍历。 递归查询在处理层次结构数据时非常有用,例如在组织结构、文件目录或层级菜单等场景。Oracle通过`START WITH ... ...
层次树查询在Oracle数据库中实质上是一种递归查询,它能够有效地解析层次结构数据。以某公司的部门组织结构为例,这些数据存储在Oracle数据库LSYX的BMXX表中,包括部门编码、部门名称、上级部门编码和上级部门名称四...
这通常通过SQL(结构化查询语言)来完成,可以是关系型数据库如MySQL、SQL Server或Oracle,也可以是非关系型数据库如MongoDB或Redis。数据库的设计应考虑实际需求,包括表的结构、字段定义以及数据之间的关系。例如...
在IT领域,尤其是在Web开发中,构建一个无限级分类树型菜单是一项常见的需求。这主要应用于网站导航、后台管理系统以及大型数据分类等场景。本文将深入探讨如何利用JSP(JavaServer Pages)技术来实现这样的功能。 ...
在.NET编程环境中,我们经常需要将数据库中的数据展示在用户界面上,比如使用树型框(TreeView)来呈现层级关系的数据。"ADO方式填充树型框"是一个关于如何利用ActiveX Data Objects(ADO)技术来将数据库数据动态...
例如,在Oracle中,可以利用CONNECT BY子句实现树结构的递归查询,而在IBM DB2中,递归查询的SQL语句由初始查询、递归查询和最终查询三部分组成。但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL ...
Oracle Prior 知识点总结 Oracle 中的 Prior 子句是...Oracle 的 Prior 子句提供了一种灵活的方式来查询树状结构表中的数据,可以根据需要指定查询的顺序和范围,并且可以使用 WHERE 子句来限定树型结构中的单个节点。
在这个例子中,“数据库填充到树型框例程.e.rar”很可能包含了一个示例程序或者代码片段,用于演示如何从数据库中提取数据并展示在树形控件中。下面我们将详细探讨这个过程涉及的技术和知识点。 1. **数据库概念**...
例如,可以使用`WITH RECURSIVE`语句(在支持的SQL版本中,如PostgreSQL、SQL Server 2005及以上)或者使用自连接和JOIN操作(在不支持递归的SQL版本中,如MySQL)。 为了展示无限级树形菜单,我们可以使用编程语言...
在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...
这就需要开发人员利用编程手段来解析树型结构数据并展示为树状视图,这通常是通过递归查询或是使用特殊的GUI控件来实现的。 然而,本文提出了一种不需要特别程序解析,几乎可以使用列表型字典表的处理逻辑,通过一...
该博客中提到的"ExecleToDBUtils.java"文件,很可能是用于读取Excel并将其数据转换为适合存储在Oracle数据库中的格式的工具类。这个类可能包含以下功能: 1. **读取Excel**:使用Apache POI库,可以读取Excel文件的...
【标题】"FOLDERTEST"是一个关于Oracle Forms中文件夹功能实现的实例,它主要展示了如何在Oracle Forms环境中创建和管理文件夹结构,以便更好地组织和操作数据。 【描述】"FOLDERTEST文件夹功能实现的小例子"是针对...
这样,通过Oracle的START WITH...CONNECT BY语句,可以方便地查询出整个菜单树,而无需递归。例如,以下SQL语句可以获取所有一级菜单及其子菜单: ```sql SELECT * FROM T_SYS_MENU START WITH MENU_PID = 0 ...
- **关系数据库管理系统(RDBMS)**:如MySQL、Oracle、SQL Server等。 - **SQL语言**:用于查询、插入、更新和删除数据。 4. **计算机网络**: - **基本概念**:计算机网络是由多个通过通信设施互连的计算机组成...
递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第...