`

ORACLE 数据库的级联查询 一句sql搞定(部门多级)

阅读更多
在ORACLE 数据库中有一种方法可以实现级联查询
 
select  *                //要查询的字段
from table              //具有子接点ID与父接点ID的表 
start with selfid=id      //给定一个startid(字段名为子接点ID,及开始的ID号)
connect by prior selfid=parentid       //联接条件为子接点等于父接点
 
这个SQL主要用于级联查询,给一个父接点可以查出所有的子接点。及子接点的子接点,一查到底,很实用。
 
例:航班表airline,如何用sql语句查询出从广州出发能到达的所有目的地,允许任意中转。
 
FLIGHTNO ORIGIN  DESTINATION
-------------------------------------------
cz3001  CAN  CSX
cz3002  CAN  SHA
cz3003  CSX  SHA
cz3004  CSX  PEK
cz3005  SHA  XIY
cz3006  SHA  SWA
cz3007  PEK  URC
cz3008  PVC  AMS
cz3009  WUH  PVC
cz3010  WUH  XIY
 
这里根就是CAN,SQL语句如下:
 
select t.destination from airline t start with origin='CAN' connect by prior destination = origin;
 
查询结果:

DESTINATION
-------------------
CSX  
SHA  
XIY  
SWA  
PEK  
URC  
SHA  
XIY  
SWA 
 

9 rows selected.
 
--------------------------------
 
 
在网上看到下面的例子应该更容易理解些,转载一下:
 
 
数据结构如下:
t1
 t11
     t111
        t1111
 t12
     t121
        t1211
 
db数据字段如下:
task_id             task_name         t.parent_task_id       ***
***                     ***                          ***                               ***
000001            t1                         ***                                 ***
000002            t11                       000001                        ***
000005            t12                       000001                         ***
000003            t111                    000002                         ***
000004            t1111                  000003                         ***
000006            t121                    000005                         ***
000007            t1211                  000006                         ***
***                     ***                       ***                                 ***

查询语句:

select t.task_id ,t.task_name ,t.parent_task_id 
from t_task t 
start with task_id='000001'
connect by prior task_id = parent_task_id;

结果显示:
task_id                 task_name          t.parent_task_id
000001                t1           
000002                t11                       000001
000003                t111                     000002
000004                t1111                    000003
000005                t12                       000001
000006                t121                     000005
000007                t1211                   000006

strat with 指定层次开始的条件,即是说满足这个条件的行即可以做为层次树的最顶层 
  
connect by prior指层之间的关联条件,即什么样的行是上层行的子行(自连接条件)
 查询所有上级信息
select level ,id,name,parentid from temptable2 
  connect by prior parentid(属于顶层的列)=id(子层的列)  start with id =1

分享到:
评论

相关推荐

    省级市级联Demo及数据库

    在IT行业中,级联(Cascading)是一种常见的前端交互设计模式,特别是在处理地理区域选择时,如省、市、区等多级下拉菜单。本文将深入探讨标题中的"省级市级联Demo及数据库",并结合描述中的两种技术实现方案——ASP...

    全国银行省市支行级联sql数据资源

    级联(cascading)可能指的是数据结构设计中的一种方式,即上级(如省份)和下级(如城市、支行)之间存在关联,用户在选择一个省份后,系统会自动加载该省份下的城市和支行信息,提供便利的多级选择功能。...

    jsp+db的js级联菜单

    在IT行业中,级联菜单(Cascading Menu)是一种常见的用户界面元素,它允许用户通过多级选择来筛选或导航到特定的信息。这种菜单结构在网页应用和后台系统中广泛使用,尤其在数据分类繁多时,能有效地组织和展示信息...

    基于jdbc 和 ajax技术实现对无限级联分类的实现

    本项目"基于jdbc和ajax技术实现对无限级联分类的实现"正是聚焦于这一主题,通过结合后端数据库操作与前端动态加载,提供了一种高效、灵活的方式来展示和管理多级分类。 首先,JDBC(Java Database Connectivity)是...

    oracle 层次化查询(行政区划三级级联)

    Oracle 层次化查询是数据库管理系统中用于处理具有层级关系数据的一种强大工具。在这个特定的案例中,我们看到的是一个行政区划数据表,其中包含了中国的省份、城市和县的编码。行政区划代码的设计使得通过检查特定...

    数据库面试基础知识.docx

    - 一组预先编写的 SQL 语句,存储在数据库中供应用程序调用。 12. **存储过程的优缺点** - **优点**:提高代码重用性,增强安全性,减少网络流量。 - **缺点**:可能降低灵活性,编写和维护成本较高。 13. **...

    代码生成器汇编.pdf

    * 数据库:SqlServer 2005/2008 版本、Oracle 或者 MySQL * 框架:MVC 3.0 版本 * 设计工具:PowerDesigner 15 版本 * 代码生成器官方网站:www.langben.com 二、数据库设计指导规范 * 表和字段命名规范 + 表必须...

    全国银行省市支行级联最新

    3. `t_city_p.sql`:很可能代表城市和省份的关系表,用于存储城市的父级(省份)信息,便于级联查询。 4. `t_province.sql`:省份表的创建脚本,存储各省份的信息,如省份ID、省份名称等。 5. `表结构.sql`:这可能...

    风越asp代码生成器 V3.5

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越.net代码生成器 v3.5

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越.Net代码生成器 [FireCode Creator] V1.3 精简版

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越ASP代码生成器FireAspCreatorv2.9.rar

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    MySQL Cluster

    Oracle等其他数据库系统也借鉴了这种“横向扩展”的概念,采用类似的策略来增强系统弹性。 #### MySQL复制的深入解析 在主从复制中,主服务器记录所有数据更改到二进制日志(bin-log),随后从服务器通过I/O线程...

    风越.net代码生成器v2.9

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

    风越ASP代码生成器2.8

    10、支持自动生成多组多级的级联下拉框功能,快速建立如:省、市、县/公司、部门、小组等形式下拉框 ★ 11、支持表单提交超过100KB的文本数据 ★ 12、支持多文件上载、修改、删除记录时同步删除文件 13、支持控件名...

Global site tag (gtag.js) - Google Analytics