程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 使用oracle遞歸查詢處理父子關系記錄

使用oracle遞歸查詢處理父子關系記錄

編輯:Oracle數據庫基礎

使用Oracle遞歸查詢可以處理父子關系記錄,下面就為您介紹這種使用Oracle遞歸查詢處理父子關系記錄的方法,供您參考。

數據庫中常要處理父子關系的記錄,在oracle中可以用Oracle遞歸查詢語句一次把所有的子記錄全部取出來。例如下:
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 s
tart 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

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