`
jelly
  • 浏览: 301543 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

对于oracle进行简单树查询(递归查询)

阅读更多

对于oracle进行简单树查询(递归查询)

DEPTID PAREDEPTID NAME
NUMBER NUMBER CHAR (40 Byte)
部门id 父部门id(所属部门id) 部门名称

通过子节点向根节点追朔.

 select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid 

 

通过根节点遍历子节点.

select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid 

 

可通过level 关键字查询所在层次.

select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid 

 

再次复习一下:start with ...connect by 的用法, start with 后面所跟的就是就是递归的种子。

递归的种子也就是递归开始的地方 connect by 后面的"prior" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;

connect by prior 后面所放的字段是有关系的,它指明了查询的方向。

练习: 通过子节点获得顶节点

select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid

 

层内排序,使用 SIBLINGS 关键字 例如:ORDER SIBLINGS BY display_order
分享到:
评论
4 楼 xy_z487 2008-12-19  
好好啊啊啊
3 楼 hanjh_2008 2008-11-06  
学到了。。。
2 楼 huanghuizz 2008-11-02  
谢谢lz,我才知道有这中方法
1 楼 finalsyo 2008-05-30  
select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid 

测了很久都不行,例如我deptid=1215,他就只能找到1215这一级了,不再往前找了,能给解答下吗?
QQ281534208

相关推荐

    Oracle递归查询

    为了更好地理解Oracle中的递归查询,我们首先需要创建一张表格来存储一个简单的树形结构。下面是一张名为`TEST_TREE`的表,包含以下列: - `ID`: 主键,标识每个节点。 - `PID`: 父节点ID,表示当前节点的上一级...

    在ORACLE、MSSQL、MYSQL中树结构表递归查询的实现.pdf

    随着MYSQL版本的更新,尤其是MYSQL 8.0之后,开始支持公用表表达式(CTE)和WITH RECURSIVE语法,这使得在MYSQL中进行递归查询变得简单而直接。 在上述三种数据库系统中实现递归查询的示例代码通常如下: ORACLE中...

    Oracle树查询实例分析

    除了这些基本操作,Oracle还提供了许多与树查询相关的函数,例如`LEVEL`(用于返回节点在树中的深度)、`CONNECT_BY_ROOT`(返回树路径上的根节点值)和`SYSDATE`(在递归过程中跟踪时间戳)等,这些函数可以增强...

    Oracle查询树形结构

    Oracle数据库提供了强大的查询功能,使得对这类树形结构数据的查询变得简单而高效。本文将深入探讨如何使用Oracle的特定查询语法来检索树形结构数据。 首先,要了解的是,在Oracle中,树形结构数据的查询主要依赖于...

    Oracle树查询及相关函数

    Oracle树查询是数据库管理中一种非常实用的技术,它允许我们处理具有层级关系的数据。在Oracle中,树查询主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`语法,这个语法让我们能够按照层级结构遍历数据。本文...

    Oracle通过递归查询父子兄弟节点方法示例

    在Oracle数据库中,递归查询是一种强大的工具,用于处理层级数据结构,如组织结构、文件系统或树形关系。在本篇文章中,我们将探讨如何利用递归查询来查找父子兄弟节点,这对于理解和处理这类关系非常关键。 首先,...

    Oracle递归树形结构查询功能

    oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。 概要:树状结构通常由根节点、父节点、子节点和叶节点组成,简单来说,一张表中存在两个字段...

    oracle树形结构,结合dtree插件使用显示树状结构菜单

    首先,Oracle中的树形结构通常通过递归关系或层次查询来实现。例如,员工组织结构、产品分类或地理区域等都是常见的层次化数据。在Oracle中,我们可以使用CONNECT BY子句来处理这些层次数据,构建出树状图。此查询...

    PostgreSQL树形结构的递归查询示例

    本文将详细探讨如何在 PostgreSQL 中进行树形结构的递归查询,并通过具体的示例代码来展示其实现。 首先,我们需要构建一个简单的树形结构数据表。在这个例子中,我们创建了一个名为 `tree_data` 的表,包含以下...

    oracle语法.rar

    1. **递归查询**:在Oracle中,递归查询通常用于处理层次结构数据,例如组织结构或分类树。Oracle提供了一个特殊的查询构造——CONNECT BY,它允许查询数据时自动生成层次结构。通过指定START WITH子句来定义递归的...

    oracle-tree-sql.rar_oracle

    Oracle提供了一种称为“连接查询”(Connect By)的特有语法,使得我们可以方便地对具有层级关系的数据进行检索。本资料"oracle-tree-sql.rar_oracle"主要探讨的就是如何在Oracle中使用SQL查询树形结构数据。 一、...

    Oracle层次查询功能的剖析.pdf

    总的来说,Oracle的层次查询功能使得处理层级关系数据变得更加简单和高效,为程序员提供了强大的工具来处理树形结构的业务需求。在实际应用中,根据具体业务场景灵活运用这些查询技巧,可以有效提升数据库操作的效率...

    Oracle字段根据逗号分割查询数据的方法

    然而,要注意的是,对于非常大的数据集和复杂分隔符的情况,这种方法可能会有性能问题,因为它涉及到字符串操作和递归层次查询。在实际应用中,考虑将这种格式的数据设计为多行记录或者使用其他数据结构(如数组类型...

    比较详细的oracle教程

    - **高级查询**:深入探讨复杂查询技巧,如使用WITH子句进行递归查询、窗口函数的应用、复杂条件筛选等。 - **数据字典**:介绍Oracle数据库中的数据字典,了解如何通过查询数据字典视图获取数据库的元数据信息,如...

    ORACLE面试测试题目

    - **非聚集索引 (NON-CLUSTERED INDEX)**:不改变表中数据的物理存储位置,而是建立索引树,提高查询效率。 ### 11. 归档模式和非归档模式的不同点及其优缺点 - **归档模式**:支持数据库事务的完整恢复,可以恢复...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...

    Oracle数据库中的级联查询、级联删除、级联更新操作教程

    这种查询能够递归地获取所有子节点,对于构建层级结构的输出非常有用。 接下来,我们讨论级联删除。在Oracle中,当定义外键约束时,可以指定删除规则。默认情况下,外键约束会阻止直接删除父表中的记录,以防破坏...

Global site tag (gtag.js) - Google Analytics