Oracle:递归查询(树形结构数据)

今天要做一个查询功能:查询某用户所属部门,且包含该部门的所有上级部门信息。偶然找到了一个方法,特意来做个笔记。分享给和我一样的菜鸟,哈哈

查询子节点

1 select *
2   from d_arc_dep
3  start with depid = ‘100000‘
4 connect by prior depid = updepid;

查询父节点

1 select *
2   from d_arc_dep
3  start with depid = ‘100000‘
4 connect by depid = prior updepid;

区别就是 prior 放的位置不一样,prior 应该是指定该字段作为查询索引吧,具体我也不明白是什么东东,就是觉的好用,哈哈!

还有一点 start widt  后面跟的只是查询条件和  where 一样用法。

时间: 2024-08-02 22:38:15

Oracle:递归查询(树形结构数据)的相关文章

Oracle递归查询的原理

在Oracle 10g下,来到scott用户下,分别以层次 1,2,3,4上的节点做实验: 当start with是根节点(level=1),要查其子节点,connect by pump和emp都是被扫描4次(总的层次). 当start with是根节点(level=2),要查其子节点,connect by pump和emp被扫描3次. 当start with是根节点(level=3),要查其子节点,connect by pump和emp被扫描2次. 当start with是根节点(level=

oracle递归查询记录

1. start with  开始的id  connect by prior 开始的id=父id 2. level 级别 3.实例 select * from ( select a.*,level tt from biz_district a start with district_id=8 connect by prior district_id=parent_id ) where tt=3 select a.district_id, a.district_name, b.district_i

无限层级且乱序的树形结构数据的整理,利用HashMap减少遍历次数

我们在展示一个机构树的时候,常常会遇到这样的一个问题,查询数据的时候,是从下往上查的,但展示数据的时候,又要从下往上展示. 这时候就要把查询到的数据进行整理从而得到我们想要的结构. 举个例子. ID PARENT_ID SOME_ATTRIBUTE_ID 2001 0   6292 6120 57010 6120 6115   6121 6115   6156 6121 56874 6115 2001   这是根据需求查询出的sql数据,但是它是无序的,所以很让人头疼,不知如何去处理,示意图是这

根据ID或者ID集合查找树形结构数据里面ID所对应的节点信息

代码看这里 截图 树形结构数据 var data = [ { "id": "7ce813f379de44e3842ca74a07b710f5", "parentId": "69fde9ffbd2a4558924d77890c747603", "label": "萍乡市河长办1", "code": "100001007002002", "t

ORACLE递归查询(适用于ID,PARENTID结构数据表)

Oracle 树操作(select…start with…connect by…prior) oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 1

Oracle 递归查询

1 select a.accountcodeid, a.accountcode, a.accountcodename, 2 SYS_CONNECT_BY_PATH(a.accountcodename, '\') as fullname, a.parentcodeid, level 3 from fm_accountcode a 4 where a.accountcodeid >= 10000 5 start with a.parentcodeid is null 6 connect by pri

实现Comparable接口对树形结构数据进行排序

背景: 数据库中无序的数据要按树形结构出输出, 如图所示: 每一个记录 对应 一条数据库的 数据, 需求来了,那么怎么实现呢,首先最简单的是直接从数据库 按顺序 查出,然后依次打印, 简单点说吧,oracle数据库有相应的语句可以实现,很容易,但是sql server 没有,尝试了下没有成功, 考虑数据库的兼容性,就像把数据到后台去排序, 那么,这也就是这篇雯所说的内容了,排序.至于排序规则就如图所示很明确了. ...割...... 刚开始说只需要3级结垢,就是每一个节点下面最多只有两个节点,那

Oracle递归查询树结构

之前在工作中碰到一个问题,需要找树结构下的所有子节点,如果用程序写会反复查询数据库,对性能有影响,在网上找了下,可以用Oracle的递归查询,例子如下: create table test1 ( cid int, cpid int ) insert into test1 (cid,cpid) values(1,0); insert into test1 (cid,cpid) values(2,1); insert into test1 (cid,cpid) values(3,1); insert

SqlServer CTE 递归查询 Oracle递归查询

在做数据库设计这块,很多时候表的数据模型就是典型的二叉树结构. 于是在查询数据的时候,就涉及到了数据的递归查询. 递归查询分为两种:1.从根节点查询自身以及所有的子节点:2.从子节点查询自身以及所有的父节点. 下面分别以Oracle 11g 数据库和MsSql 2008 数据库为例,来实现上述两种类型的递归查询 先建一张表 表名: TAdministrative  字段名称  说明  AdministrativeID  行政编号  AdministrativePID  当前行政级别的上一行政级别