`
yadsun
  • 浏览: 181375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle树结构查询(connect by ...)

    博客分类:
  • SQL
阅读更多
 SELECT... 
   [START WITH 初始化条件(根结节点的条件)]
   CONNECT BY PRIOR 递归的条件
   [ORDER SIBLINGS BY 排序条件]

关键字解释:
    START WITH        :用来做为根结节点的条件
    CONNECT BY        :表示父子关系成立的条件
    ORDER SIBLINGS BY :在层次结构中排序,而不会打破整个树结构

例:
    表结构:
            ID  NUMBER(19)  Y     
            PARENT_ID  NUMBER(19)  Y     
            ORDER_ID  NUMBER(19)
    表中数据如下:
                ID      PARENT_ID  ORDER_ID
                10        1
                100      10            2
                101      100           3
                102      100           4
                103      100           5
                104      100           6
                105      100           7
                200      10            8
                201      200           9
                202      200           10
                203      200           11
                204      200           12
                205      200           13
                10101    101           14
                10102    101           15
              
   查询语句:select t.* from tree_table t   START WITH t.parent_id IS NULL CONNECT BY PRIOR t.id=t.parent_id
   结果如下:
                ID    PARENT_ID  ORDER_ID
                10       1
                100      10      2
                101      100     3
                10101    101     14
                10102    101     15
                102      100     4
                103      100     5
                104      100     6
                105      100     7
                200      10      8
                201      200     9
                202      200     10
                203      200     11
                204      200     12
                205      200     13
               
   查询后排序:select t.* from tree_table t   START WITH t.parent_id IS NULL CONNECT BY PRIOR t.id=t.parent_id  ORDER SIBLINGS BY t.order_id DESC
   结果如下:
                ID    PARENT_ID  ORDER_ID
                10       1
                200      10          8
                205      200         13
                204      200         12
                203      200         11
                202      200         10
                201      200         9
                100      10          2
                105      100         7
                104      100         6
                103      100         5
                102      100         4
                101      100         3
                10102    101         15
                10101    101         14
3
1
分享到:
评论

相关推荐

    Oracle 数据库树形结构用法总结.mht

    Oracle 数据库树形结构用法总结,例如SYS_CONNECT_BY_PATH 、START WITH . . . CONNECT BY . . .等具体语法介绍

    oracle 基于 树结构查询

    Oracle 中的树结构查询基于 CONNECT BY 语句,该语句可以根据父子关系将数据连入树型结构中。 CONNECT BY 语句的基本格式如下: SELECT 。。。CONNECT BY {PRIOR 列名 1=列名 2|列名 1=PRIOR 列名 2}[START WITH]...

    Oracle递归树形结构查询功能

    例如,它可以将每个节点的路径作为字符串返回,便于理解和分析树结构。 在实际应用中,例如组织结构的展示,我们可以创建一个包含部门信息的表`SYS_DEPT`,其中`dept_id`为主键,`par_dept_id`表示父级部门ID,以此...

    oracle树结构查询.DOC

    `CONNECT BY`还可以使用条件来限制遍历的路径,比如只查询某个特定部门的员工树结构,可以添加`WHERE`子句: ```sql SELECT * FROM emp START WITH EMPNO = 7839 CONNECT BY PRIOR EMPNO = MGR WHERE DEPTNO = 20;...

    Oracle树结构查询(图)

    在处理复杂的数据查询时,尤其在数据具有层次性或树状结构的情况下,Oracle提供了一种高效的方法——树结构查询。本篇文章将深入探讨Oracle如何处理这类查询,并通过一个具体的文档案例进行解析。 首先,我们要了解...

    oracle树结构查询方法

    树结构查询在Oracle中可以通过`CONNECT BY`和`START WITH`子句实现。`CONNECT BY`子句用于定义层次关系,它表明数据将按照层次顺序检索,通过指定的列(如EMPNO和MGR)连接形成树状结构。`PRIOR`关键字用于指示父...

    【原创】oracle树形结构查询,层次查询,hierarical retrival

    Oracle树形结构查询,层次查询,hierarchical retrieval Oracle中的树形结构查询,也被称为层次查询或hierarchical retrieval,是一种获取树形结构数据的方法。这种方法可以将数据组织成树形结构,具有层次关系的...

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

    在数据库系统中实现树结构表递归查询是一种常见的需求,它允许我们查询出具有层级关系的数据。ORACLE、MSSQL(Microsoft SQL Server)、MYSQL是三大主流数据库系统,它们各自提供了不同的方式来实现递归查询。 首先...

    树状数据库表:Oracle中start with...connect by prior子句用法

    Oracle在`CONNECT BY`查询过程中自动提供了一个`LEVEL`伪列,它表示当前行在树结构中的深度,从1开始计数。这个信息可以用于过滤或在结果集中显示层级。 5. **示例**: 假设有一个`DEPARTMENTS`表,包含`...

    Oracle查询树形结构

    在 Oracle 中,查询树形结构可以使用 START WITH...CONNECT BY PRIOR 子句实现递归查询。其基本语法是: SELECT * FROM tablename START WITH cond1 CONNECT BY cond2 WHERE cond3; 其中,COND1 是根结点的限定...

    【Oracle】树状结构查询

    树状结构查询主要依赖于`START WITH`和`CONNECT BY PRIOR`这两个关键语法。`START WITH`用于指定查询的起始节点,而`CONNECT BY PRIOR`则定义了节点之间的关系,从而实现对树状结构的遍历。 #### 示例:以KING为根...

    Oracle树查询总结

    Oracle 数据库在处理树形数据结构时,提供了一种强大的查询方法,即 `SELECT...START WITH...CONNECT BY...PRIOR` 语法。这种查询模式允许我们以递归方式遍历和检索具有层级关系的数据,例如组织结构、产品分类或者...

    oracle菜单树查询

    oracle菜单树查询 使用实例 使用START WITH CONNECT BY PRIOR子句实现递归查询

    Oracle树查询实例分析

    Oracle树查询是数据库管理中处理层次结构数据的重要技术,它主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`的语法。这个语法允许我们按照树的结构来组织和检索数据,尤其适用于表示组织结构、目录层级或者...

    浅谈Oracle下connect by原理.pdf

    Connect By是Oracle用来进行层次查询的语法结构,其原理可以被理解为深度优先遍历(DFS),即从根节点开始,先遍历左子树,再遍历右子树,以此类推,直到找到所有的叶子节点。当使用Connect By进行查询时,每一行...

    Oracle树查询及相关函数

    在Oracle中,树查询主要依赖于`SELECT...START WITH...CONNECT BY...PRIOR`语法,这个语法让我们能够按照层级结构遍历数据。本文将深入探讨这个语法以及与之相关的函数,并通过实例来说明它们的用法。 首先,我们...

    Oracle的Connect By使用示例

    Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...

    ibatis下oracle树查询

    通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构。 例如,假设我们有一个部门表DEPARTMENTS,包含ID(主键)、PARENT_ID(父ID)和NAME(部门名称)字段...

    oracle connect by level 应用

    Oracle的`CONNECT BY LEVEL`是数据库查询中用于构建层次结构数据的一种强大工具,尤其是在处理具有层级关系的数据时,如组织架构、产品分类等。本文将深入探讨`CONNECT BY`子句以及`LEVEL`伪列的使用,以帮助你更好...

    connect_by_path和connect_by_root比较总结

    通过实例比较了 SYS_CONNECT_BY_PATH 和 CONNECT_BY_ROOT 的异同,和返回树形的数据结构

Global site tag (gtag.js) - Google Analytics