Oracle级联查询

在ORACLE数据库中有一种方法可以实现级联查询select*//要查询的字段fromtable//具有子接点ID与父接点ID的表startwithselfid=id//给定一个

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

在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;
http://roucheng.cnblogs.com/

结果显示:

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

http://www.cnblogs.com/roucheng/p/5404594.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120618.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • drwtsn32.exe 遇到问题须要关闭。我们对此引起的不便表示抱歉

    drwtsn32.exe 遇到问题须要关闭。我们对此引起的不便表示抱歉

    2021年12月15日
    39
  • Web后端开发入门(1)

    Web概述:    在英语中web表示网页的意思,它用于表示Internet主机上供外界访问的资源。Internet上供外界访问的Web资源分为:    1.静态Web资源(如html页面):指web页面中始终不变的数据。    2.动态Web资源:指web页面中供人们浏览的数据是由程序产生的,也就是实时变化的数据。动态Web应用的实现手段:    静态web开发技术有html,常用动态web开发…

    2022年4月4日
    37
  • 大学四年,靠着这些学习网站,我从挂科学渣变成了别人眼中的大神

    大学四年,靠着这些学习网站,我从挂科学渣变成了别人眼中的大神前记毕业合影时,导员笑着对我说“你可是我们系里的风云人物”。我也笑了,思绪却回到了四年前。还记得四年前,我从小县城里走出,来到学校的计算机学院报到,开始面对更大世界。一段时间之后,我见识到同学的眼界,视野,经历。大一学的语言课是C语言,当我还不知道C语言是什么的时候,同学高中时已经拿NOIP的奖牌拿到了手软。我深深惭愧,自愧不如,也很消极,有机会就偷懒,学期结束后C语言挂科了。大一生活是最…

    2022年8月23日
    3
  • cv图像翻转,EmguCV图像旋转「建议收藏」

    iusethiscodeprivatevoidbutton12_Click(objectsender,EventArgse){Bitmapbm=newBitmap(pictureBox1.Image);Imageimg=newImage(bm);doublex=20;img.Rotate(x,newGray(255));pictureBox9.Image…

    2022年4月10日
    63
  • 【图像处理算法】直方图均衡化「建议收藏」

    【图像处理算法】直方图均衡化「建议收藏」参考文献:RafaelC.Gonzalez,RichardE.Woods,DigitalImageProcessing(ThirdEdition) 胡学龙.数字图像处理(第三版) 左飞.图像处理中的数学修炼目录直方图均衡化的介绍直方图的概念直方图均衡化的理论基础手工实现直方图均衡化MATLAB上实现直方图均衡化直方图均衡化的缺点直方图均衡…

    2022年5月17日
    85
  • RegisterStartupScript 过期

    RegisterStartupScript 过期1.ClientScriptManager.RegisterStartupScript方法:  1)  ClientScriptManager.RegisterStartupScript (Type,String,String)  2)  ClientScriptManager.RegisterStartupScript (Type,String,String,

    2022年7月20日
    13

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号