`
skambc
  • 浏览: 46048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 树

阅读更多
做了个实验总结一下connect by树查询的用法:

SQL> select * from t_dept_temp;

   DEPT_ID  PARENT_ID DEPT_NAME      AMOUNT
---------- ---------- ---------- ----------
         1            1                   2
         2          1 1-2                15
         3          1 1-3                 8
         4          2 1-2-4              10
         5          2 1-2-5               9
         6          3 1-3-6              17
         7          3 1-3-7               5
         8          3 1-3-8               6

已选择8行。

SQL> desc t_dept_temp;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------
DEPT_ID                                   NOT NULL NUMBER(2)
PARENT_ID                                          NUMBER(2)
DEPT_NAME                                          VARCHAR2(10)
AMOUNT                                             NUMBER(3)

接下来实现各种查询的测试:
1.查询dept_id=2以及所有下级部门:
SQL> select level treelevel,dept_id,parent_id,dept_name from      t_dept_temp
  2  start with dept_id=2
  3  connect by parent_id = prior dept_id;

TREELEVEL    DEPT_ID  PARENT_ID DEPT_NAME
---------- ---------- ---------- ----------
         1          2          1 1-2
         2          4          2 1-2-4
         2          5          2 1-2-5

2.查询dept_id=4以及所有上级部门:
SQL> select level treelevel,dept_id,parent_id,dept_name from t_dept_temp
  2  start with dept_id=4
  3  connect by dept_id = prior parent_id;

TREELEVEL    DEPT_ID  PARENT_ID DEPT_NAME
---------- ---------- ---------- ----------
         1          4          2 1-2-4
         2          2          1 1-2
         3          1            1

3.查询dept_id=1以及所有下级部门:
SQL> select level treelevel,dept_id,parent_id,dept_name from t_dept_temp
  2  start with dept_id=1
  3  connect by parent_id = prior dept_id;

TREELEVEL    DEPT_ID  PARENT_ID DEPT_NAME
---------- ---------- ---------- ----------
         1          1            1
         2          2          1 1-2
         3          4          2 1-2-4
         3          5          2 1-2-5
         2          3          1 1-3
         3          6          3 1-3-6
         3          7          3 1-3-7
         3          8          3 1-3-8

已选择8行。

4.查询dept_id=1以及所有下级部门,但除了部门3 (排除树枝,部门3下的所有节点也都排除)
SQL> select level treelevel,dept_id,parent_id,dept_name from t_dept_temp
  2  start with dept_id=1
  3  connect by parent_id=prior dept_id and dept_id <> 3;

TREELEVEL    DEPT_ID  PARENT_ID DEPT_NAME
---------- ---------- ---------- ----------
         1          1            1
         2          2          1 1-2
         3          4          2 1-2-4
         3          5          2 1-2-5

5.查询dept_id=1以及所有下级部门,但除了部门3 (仅排除部门3,其下的所有节点都是包括的)
SQL> select level treeview, dept_id,parent_id,dept_name from t_dept_temp
  2  where dept_id <> 3
  3  start with dept_id=1
  4  connect by parent_id = prior dept_id;

  TREEVIEW    DEPT_ID  PARENT_ID DEPT_NAME
---------- ---------- ---------- ----------
         1          1            1
         2          2          1 1-2
         3          4          2 1-2-4
         3          5          2 1-2-5
         3          6          3 1-3-6
         3          7          3 1-3-7
         3          8          3 1-3-8

已选择7行。
注意这里的where dept_id <> 3,他的执行是在connect by之后做的
分享到:
评论

相关推荐

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

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

    Oracle树查询实例分析

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

    Oracle树查询及相关函数

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

    oracle树形查询

    最近项目中遇到,开始不太了解,现在分享一下,希望可以帮助其他人

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

    总结来说,Oracle树形结构结合dtree插件能够帮助开发者有效地展示和操作层次化数据,这对于那些需要直观呈现层级关系的应用场景非常有用。在实际项目中,理解如何使用Oracle的层次查询和dtree插件的配置至关重要,这...

    oracle树查询

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

    Oracle递归树形结构查询功能

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

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

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

    Oracle树查询总结

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

    Oracle树结构查询(图)

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

    oracle树结构查询方法

    总之,Oracle数据库支持对树形结构数据的高效查询,通过`CONNECT BY`和`START WITH`子句,我们可以轻松地构建和遍历这些层次关系,这对于理解和操作复杂的数据结构至关重要。在进行树结构查询时,理解这些语句的工作...

    ibatis下oracle树查询

    在本话题中,我们将探讨如何在使用iBatis框架与Oracle数据库时实现树形查询。 首先,iBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了比传统JDBC更高级的抽象层,使得...

    oracle树结构查询.DOC

    这两个子句是Oracle特有的,用于处理层级关系的数据,例如组织结构、产品分类或者树形菜单等。理解并掌握这两种子句的用法对于处理层级数据至关重要。 `START WITH`子句用于指定查询的起始节点,也就是树结构中的根...

    oracle 树查询 语句

    格式: SELECT column FROM table_name START WITH column=value CONNECT BY PRIOR 父主键=子外键 select lpad(‘ ‘,4*(level-1))||name name,job,id,super from emp start with super is null connect by prior id...

    Oracle查询树形结构

    Oracle 查询树形结构 Oracle 查询树形结构是一种特殊的查询方式,它可以将树形结构的数据从 Oracle 数据库中检索出来。这种结构广泛应用于各种应用系统中,例如管理系统、文件系统、组织结构等。 在 Oracle 中,...

Global site tag (gtag.js) - Google Analytics