`
lxf3339
  • 浏览: 60947 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle 10g 中的递归查询(树型查询)

阅读更多

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递归树形结构查询功能

    Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...

    ORACLE查询树型关系(connect_by_prior_start_with)

    在 Oracle 10g 中,引入了新的伪列函数 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF 和 CONNECT_BY_ISCYCLE,以增强层次查询的能力。 CONNECT_BY_ROOT 函数可以用来获取当前行的根节点,例如: ```sql SELECT CONNECT_BY_...

    oracle 树型的寻父或寻子

    在Oracle数据库中,树型结构的数据模型是一...总的来说,处理Oracle中的树型结构寻父或寻子操作,需要掌握递归查询、索引优化、事务管理等多方面的技术。理解并熟练运用这些技巧,将使你在处理层级数据时更加得心应手。

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    在MySQL中,没有内置的递归查询语句,通常需要借助存储过程或存储函数来实现树型数据的遍历。 递归查询在处理层次结构数据时非常有用,例如在组织结构、文件目录或层级菜单等场景。Oracle通过`START WITH ... ...

    基于Oracle的层次树查询功能及实例分析.pdf

    层次树查询在Oracle数据库中实质上是一种递归查询,它能够有效地解析层次结构数据。以某公司的部门组织结构为例,这些数据存储在Oracle数据库LSYX的BMXX表中,包括部门编码、部门名称、上级部门编码和上级部门名称四...

    将数据库中的内容加入树型控件中,通过建立数据库,再与树型控件

    这通常通过SQL(结构化查询语言)来完成,可以是关系型数据库如MySQL、SQL Server或Oracle,也可以是非关系型数据库如MongoDB或Redis。数据库的设计应考虑实际需求,包括表的结构、字段定义以及数据之间的关系。例如...

    JSP与无限级分类树型菜单

    在IT领域,尤其是在Web开发中,构建一个无限级分类树型菜单是一项常见的需求。这主要应用于网站导航、后台管理系统以及大型数据分类等场景。本文将深入探讨如何利用JSP(JavaServer Pages)技术来实现这样的功能。 ...

    ADO方式填充树型框.rar

    在.NET编程环境中,我们经常需要将数据库中的数据展示在用户界面上,比如使用树型框(TreeView)来呈现层级关系的数据。"ADO方式填充树型框"是一个关于如何利用ActiveX Data Objects(ADO)技术来将数据库数据动态...

    MS SQL Server树形结构表遍历的循环算法.pdf

    例如,在Oracle中,可以利用CONNECT BY子句实现树结构的递归查询,而在IBM DB2中,递归查询的SQL语句由初始查询、递归查询和最终查询三部分组成。但是,MS SQL Server在当时尚未内置递归查询功能,这意味着在MS SQL ...

    oracle prior

    Oracle Prior 知识点总结 Oracle 中的 Prior 子句是...Oracle 的 Prior 子句提供了一种灵活的方式来查询树状结构表中的数据,可以根据需要指定查询的顺序和范围,并且可以使用 WHERE 子句来限定树型结构中的单个节点。

    数据库填充到树型框例程.e.rar

    在这个例子中,“数据库填充到树型框例程.e.rar”很可能包含了一个示例程序或者代码片段,用于演示如何从数据库中提取数据并展示在树形控件中。下面我们将详细探讨这个过程涉及的技术和知识点。 1. **数据库概念**...

    无限级树形菜单(Sql数据库)

    例如,可以使用`WITH RECURSIVE`语句(在支持的SQL版本中,如PostgreSQL、SQL Server 2005及以上)或者使用自连接和JOIN操作(在不支持递归的SQL版本中,如MySQL)。 为了展示无限级树形菜单,我们可以使用编程语言...

    MySQL实现树状所有子节点查询的方法

    在MySQL中,实现树状所有子节点的查询并非像Oracle那样可以直接使用Hierarchical Queries和`CONNECT BY`语句。然而,尽管MySQL不直接支持这样的功能,我们仍然可以通过其他方法来达到相同的效果。以下将详细介绍几种...

    用SQL形成父子结点树结构的妙法.pdf

    这就需要开发人员利用编程手段来解析树型结构数据并展示为树状视图,这通常是通过递归查询或是使用特殊的GUI控件来实现的。 然而,本文提出了一种不需要特别程序解析,几乎可以使用列表型字典表的处理逻辑,通过一...

    Excel树形结构数据导入Oracle数据库(Java)

    该博客中提到的"ExecleToDBUtils.java"文件,很可能是用于读取Excel并将其数据转换为适合存储在Oracle数据库中的格式的工具类。这个类可能包含以下功能: 1. **读取Excel**:使用Apache POI库,可以读取Excel文件的...

    FOLDERTEST

    【标题】"FOLDERTEST"是一个关于Oracle Forms中文件夹功能实现的实例,它主要展示了如何在Oracle Forms环境中创建和管理文件夹结构,以便更好地组织和操作数据。 【描述】"FOLDERTEST文件夹功能实现的小例子"是针对...

    通向架构师的道路(第六天)之漫谈基于数据库的权限系统的设计

    这样,通过Oracle的START WITH...CONNECT BY语句,可以方便地查询出整个菜单树,而无需递归。例如,以下SQL语句可以获取所有一级菜单及其子菜单: ```sql SELECT * FROM T_SYS_MENU START WITH MENU_PID = 0 ...

    计算机二级常考的知识点.pdf

    - **关系数据库管理系统(RDBMS)**:如MySQL、Oracle、SQL Server等。 - **SQL语言**:用于查询、插入、更新和删除数据。 4. **计算机网络**: - **基本概念**:计算机网络是由多个通过通信设施互连的计算机组成...

    JAVA上百实例源码以及开源项目源代码

    递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第...

Global site tag (gtag.js) - Google Analytics