`
czyeclipse
  • 浏览: 1941 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

connect by 查出机构部门用户树

阅读更多
之前一直有这么一个问题总是觉得不能用sql直接解决:数据库里面存储了树形结构,并且每一层都按一个orderby字段排序,怎么使用一个sql直接查出树形结构从上到下的顺序呢?今天终于有时间研究了一下,下面把数据库结构和sql贴出来大家一起参考一下。
首先说说我们的数据结构:机构表sys_organization(id,parent_organ,organ_simple_name,orderby),部门表sys_department(id,parent_department,sys_organization,department_name,orderby)(因为部门是挂在机构下面的,对于上级部门即parent_department为空的那些部门则是直接挂在机构下面,而parent_department不为空的话则是挂在部门下面),用户表sysuser(id,sys_department,user_name,orderby)(对于用户则是直接挂在部门下面的)

select rs.*,level from (
select 'org'||org.id id,'org'||org.parent_organ pid,org.organ_simple_name showname,org.orderby orderby from sys_organization org where org.is_valid=1
union all
select 'dep'||dep.id id,'org'||dep.sys_organization pid,dep.department_name showname,dep.orderby orderby from sys_department dep where dep.is_valid=1 and dep.parent_department is null
union all
select 'dep'||dep.id id,'dep'||dep.parent_department pid,dep.department_name showname,dep.orderby orderby from sys_department dep where dep.is_valid=1 and dep.parent_department is not null
union all
select 'usr'||su.id id,'dep'||su.sys_department pid,su.user_name showname,su.orderby orderby from sysuser su where su.is_valid=1
)rs connect by rs.pid=prior rs.id start with rs.id='org1' order siblings by rs.orderby
这样就可以查出按机构部门用户构成树,同时内部使用orderby排序顺序的一个查询结果
分享到:
评论

相关推荐

    connect by prior数据库树的应用

    ### Connect By Prior 数据库树的应用 #### 概述 在关系型数据库中,尤其是在 Oracle 数据库环境下,构建和查询层次结构数据是一项常见的需求。通过使用 `Connect By Prior` 存储过程,我们可以有效地处理这类问题...

    connect by的使用探索

    Connect By是一种递归查询语句,用于实现树形结构的查询和遍历。它是 Oracle 数据库中的一种特色语句,能够高效地查询树形结构的数据。 Connect By的基本语法 Connect By语句的基本语法如下: ```sql SELECT [/*+ ...

    connect by的使用

    在Oracle数据库中,`CONNECT BY` 是一个非常重要的SQL语法,用于构建层次查询,它能够帮助我们处理具有层级关系的数据,比如组织结构、产品分类、树形菜单等。`CONNECT BY` 查询允许从一个表中抽取数据,并按照指定...

    oracle connect by level 应用

    `CONNECT BY`是Oracle SQL中用于处理树形数据结构的关键字,它允许我们根据指定的连接条件遍历层级关系。通常,`CONNECT BY`与`START WITH`一起使用,`START WITH`指定了层级遍历的起始节点。 例如,假设我们有一个...

    connect_by_path和connect_by_root比较总结

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

    connect_by_prior_递归算法

    虽然`Connect By Prior`默认按照树的遍历顺序返回结果,但可以通过`ORDER BY`子句改变结果的显示顺序。 #### 总结 `Connect By Prior`是Oracle数据库中处理层次结构数据的强大工具。通过正确地设置`START WITH`、`...

    Oracle的Connect By使用示例

    ### Oracle的Connect By使用示例 #### 一、引言 在关系数据库系统中,进行树状或层次结构数据查询时经常会遇到复杂性问题。Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现...

    Oracle递归树形结构查询功能

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

    oracle中connect-by-prior用法,实战解决日期分解问题.docx

    最后,`ORDER BY`子句可以用于调整结果集的顺序,这不同于`CONNECT BY`自动按照树结构遍历的顺序,允许用户自定义输出结果的排列。 总的来说,`CONNECT BY PRIOR`是Oracle SQL中处理树形数据结构的强大工具,它能够...

    ORACLE查询树型关系(connect_by_prior_start_with)

    使用 START WITH 和 CONNECT BY 子句可以实现 SQL 的层次查询,并且可以使用 SYS_CONNECT_BY_PATH 函数和 CONNECT_BY_ROOT、CONNECT_BY_ISLEAF、CONNECT_BY_ISCYCLE 等伪列函数来增强层次查询的能力。

    oracle菜单树查询

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

    oracle Connect By使用

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

    Oracle_start_with_connect_by_prior_用法

    ### Oracle中的START WITH CONNECT BY PRIOR 用法详解 #### 一、概念介绍 在Oracle数据库中,`START WITH` 和 `CONNECT BY PRIOR` 是两个非常强大的特性,主要用于处理具有层级结构的数据。这两个特性可以帮助我们...

    DB2Connect用户指南

    ### DB2Connect用户指南知识点详解 #### 一、DB2Connect产品概述 - **产品版本**: DB2Connect 9.7 版本。 - **功能介绍**: - **数据库目录管理**: 支持对数据库目录进行管理和维护,确保用户能够高效地查找和访问...

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

    本文将详细讲解如何利用`START WITH...CONNECT BY PRIOR`子句来构建和查询树形数据库表。 `START WITH...CONNECT BY PRIOR`是Oracle SQL中的一个特性,用于处理具有层级关系的数据。这个子句允许我们遍历和查询具有...

    DB2 Connect用户指南

    从给定的文件信息来看,这是一份关于IBM DB2 Connect的用户指南,主要涵盖了DB2 Connect的使用、配置以及与各种技术环境的集成方法。下面将根据标题、描述、标签以及部分内容,深入解析其中涉及的关键知识点。 ### ...

    start connect by

    在SQL查询中,`START WITH` 和 `CONNECT BY` 是两个关键的子句,它们用于构建层次结构查询,通常在处理具有上下级关系的数据时非常有用,如员工与经理的关系、组织结构或者产品分类等。这两个子句是Oracle数据库特有...

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

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

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

    ### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...

    浅谈Oracle下connect by原理.pdf

    文章中给出了一个名为`t_test_connectby`的数据表例子,其中包含父子关系的节点数据。通过该表,我们可以更直观地了解Connect By的执行过程。 - 不指定起始条件时,使用`CONNECT BY`: ```sql SELECT * FROM t_test...

Global site tag (gtag.js) - Google Analytics