熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

HierarchicalqueryOracle分級查詢

2013-11-13 15:41:03  來源: Oracle 

  start with 子句用於規定分級結構中的根行

  connect by 子句用於規定分級結構中父行與子行之間的關系

  nocycle 參數用於指定oracle在分級結構存在回路的情況時依然返回結構行

  在分級查詢中在條件(指定父子關系)中的一個表達式(父或子)必須由prior操作符進行限定用來指定父子關系中的父

   PRIOR expr = expr

  or

   expr = PRIOR expr

  關於prior我個人的理解假設有關系 R(id pid)有如下數據

   ID PID

  select * from R start with id = connect by  prior id = pid;

  在這個查詢中prior在列id前我們根據表中數據構建一個有向圖從prior限定的列指向另外一列即id指向pid

  無標題

  那麼這個查詢的意義就是尋找圖中哪些結點可以到達結點通過圖我們可以看到結果應為以及自己

  SQL查詢的結果為

  ID                    PID

  

                       

                       

                       

                       

   rows selected

  prior限定的列如果和子句start with規定的列相同表示哪些結點可以到達start with規定的列

  prior限定的列如果和子句start with規定的列不同表示通過start with規定的列可以到達哪些結點

  SYS_CONNECT_BY_PATH(columnchar)中的columu與prior限定的列相同時即表示路徑

  當分級結構中存在回路時可以配合查詢偽列 level connect_by_isleaf connect_by_root等獲得更多分級結構的信息


From:http://tw.wingwit.com/Article/program/Oracle/201311/17130.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.