程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> Oracle級聯查詢,Oracle級聯

Oracle級聯查詢,Oracle級聯

編輯:Oracle教程

Oracle級聯查詢,Oracle級聯


在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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved