`
king_tt
  • 浏览: 2229003 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Oracle 中的树查询和 connect by

 
阅读更多
  • Oracle 中的树查询和 connect by

    使用 connect by 和 start with 来建立类似于树的报表并不难,只要遵循以下基本原则即可:

    使用 connect by 时各子句的顺序应为:
    select
    from
    where
    start with
    connect by
    order by
  • prior 使报表的顺序为从根到叶(如果 prior 列是父辈)或从叶到根(如果 prior 列是后代)。
  • where 子句可以从树中排除个体,但不排除它们的子孙(或者祖先,如果 prior 列是后代)。
  • connect by 中的条件(尤其是不等于)消除个体和它所有的子孙(或祖先,依赖于怎样跟踪树)。
  • connect by 不能与 where 子句中的表连接在一起使用。



下面是几个例子


1. 从根到叶遍历
SELECT n_parendid, n_name, (LEVEL - 1), n_id
FROM navigation
WHERE n_parendid IS NOT NULL
START WITH n_id = 0
CONNECT BY n_parendid = PRIOR n_id;

2. 从叶到根遍历
SELECT n_parendid, n_name, (LEVEL - 1), n_id
FROM navigation
WHERE n_parendid IS NOT NULL
START WITH n_id = 300
CONNECT BY n_id = PRIOR n_parendid;


3. 排除个体,但不排除它们的子孙
SELECT n_parendid, n_name, (LEVEL - 1), n_id
FROM navigation
WHERE n_parendid IS NOT NULL AND n_id != 2
START WITH n_id = 0
CONNECT BY n_parendid = PRIOR n_id;

4. 消除个体和它所有的子孙
SELECT n_parendid, n_name, (LEVEL - 1), n_id
FROM navigation
WHERE n_parendid IS NOT NULL
START WITH n_id = 0
CONNECT BY n_parendid = PRIOR n_id AND n_id != 2;


5. 改变显示顺序
SELECT n_parendid, n_name, (LEVEL - 1), n_id
FROM navigation
WHERE n_parendid IS NOT NULL
START WITH n_id = 0
CONNECT BY n_parendid = PRIOR n_id
ORDER BY n_viewnum DESC;

分享到:
评论

相关推荐

    oracle菜单树查询

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

    Oracle递归树形结构查询功能

    递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...

    oracle 基于 树结构查询

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

    Oracle树查询总结

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

    Oracle查询树形结构

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

    oracle connect by level 应用

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

    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的Connect By使用示例

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

    Oracle start with.connect by prior子句实现递归查询

    在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织结构、产品分类、文件系统等场景中,通过递归查询可以方便地获取树状或层级...

    Oracle树查询实例分析

    Oracle树查询是数据库管理中处理层次结构数据的重要技术,它主要依赖于`SELECT......理解并熟练掌握`SELECT...START WITH...CONNECT BY...PRIOR`语法及其相关函数,对于有效地管理和查询具有层级关系的数据至关重要。

    Oracle树查询及相关函数

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

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

    在Oracle中,树形结构查询可以通过start with和connect by子句来实现。start with子句用于确定开始节点,而connect by子句用于指定父子关系。层次查询语句可以通过level关键字来确定层次关系,level关键字是可选的,...

    Oracle中connect by...start with...的使用

    本文章详细介绍了Oracle中connect by...start with...的用法。

    Oracle中树的操作

    为了展示树形结构,可以使用Oracle中的`START WITH`和`CONNECT BY PRIOR`语句。下面的查询将从根节点(名称为'ROOT')开始,递归地显示所有子节点。 ```sql SELECT ST.* FROM SCOTT_TREE ST START WITH ST.NAME = '...

    oracle树结构查询方法

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

    connect_by_path和connect_by_root比较总结

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

    oracle Connect By使用

    Connect By 可以列出上下级关系 构造序列 求排列组合 逆转求出下上级的关系路径

    ibatis下oracle树查询

    树形查询通常涉及到递归查询,Oracle数据库提供了一种名为“CONNECT BY”的语法,用于处理层次关系数据。通过指定起始节点(START WITH)和连接条件(CONNECT BY),我们可以构建出一个递归查询,从而获取整个树结构...

    Oracle树结构查询(图)

    查询树结构数据时,我们通常会用到递归查询。Oracle提供了CONNECT BY子句来实现这一点。它允许我们定义一个起始点(通常是顶层节点),然后根据特定的连接条件逐层向下遍历。例如,我们可以用以下SQL语句查询员工的...

    oracle树查询

    在Oracle数据库中,进行树状结构数据查询时,通常会使用到特定的查询语法,包括`START WITH`、`CONNECT BY PRIOR`等关键字。本文将详细介绍这些关键字及其应用场景,并通过具体示例来帮助理解。 #### 一、基本概念 ...

Global site tag (gtag.js) - Google Analytics