oracle中 connect by prior 遞歸算法

http://blog.163.com/xxciof/blog/static/7978132720095193113752/



oracle中 connect by prior 遞歸算法

Oracle中start with...connect by prior子句用法 connect by 是結構化查詢中用到的,其基本語法是:
select ... from tablename start with 條件1
connect by 條件2
where 條件3;


例:

select * from table
start with org_id = 'HBHqfWGWPy'
connect by prior org_id = parent_id;
 



     簡單說來是將一個樹狀結構存儲在一張表裏,比如一個表中存在兩個字段:
org_id,parent_id那麼通過表示每一條記錄的parent是誰,就可以形成一個樹狀結構。
     用上述語法的查詢可以取得這棵樹的所有記錄。
     其中:
     條件1 是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。
     條件2 是連接條件,其中用PRIOR表示上一條記錄,比如 CONNECT BY PRIOR org_id = parent_id就是說上一條記錄的org_id 是本條記錄的parent_id,即本記錄的父親是上一條記錄。
     條件3 是過濾條件,用於對返回的所有記錄進行過濾。

     簡單介紹如下:
     早掃描樹結構表時,需要依此訪問樹結構的每個節點,一個節點只能訪問一次,其訪問的步驟如下:
     第一步:從根節點開始;
     第二步:訪問該節點;
     第三步:判斷該節點有無未被訪問的子節點,若有,則轉向它最左側的未被訪問的子節,並執行第二步,否則執行第四步;
     第四步:若該節點爲根節點,則訪問完畢,否則執行第五步;
     第五步:返回到該節點的父節點,並執行第三步驟。

     總之:掃描整個樹結構的過程也即是中序遍歷樹的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章