閱讀928 返回首頁    go 阿裏雲 go 技術社區[雲棲]


db2和oracle中的樹查詢(遞歸查詢)語句-

在db2和oracle中的對樹的遞歸查詢語句。

表結構:

節點

根節點

父節點

節點名稱

父節點

(父節點的)子節點

(父節點的子節點的)孫子節點

父節點

(父節點的)子節點

根節點()
     父節點()
           (父節點的)子節點() 
(父節點的子節點的)孫子節點()
     父節點()
           (父節點的)子節點()

語句要求的功能:實現給出一個父節點然後得到該父節點下的所有子節點的信息的查詢語句:

讓我們研究這個查詢語句:
RPL 作為一個具有以下三列的虛擬表: 和 。
WITH 子句內的第一個 SELECT 語句是初始化表。它隻執行一次。它的結果形成虛擬表的初始內容以作為遞歸的種子。在上麵的示例中,種子是 為 任意傳進去的參數 的一行或多行。
第 二個 SELECT 語句執行多次。將種子作為輸入(JOIN 中的輔助表)傳遞給第二個 SELECT 語句以產生下一個行集合。將 JOIN 的結果添加(UNION ALL)到虛擬表的當前內容中,並放回到其中以形成用於下一次傳遞的輸入。隻要有行產生,這個過程就會繼續。
如果期望,虛擬表上最後的 SELECT 允許我們選擇遞歸查詢所產生的所有行或僅部分行。

的查詢語句:

讓我們研究這個查詢語句:
  本語句實際上是 start with ...connect by 的用法, start with 後麵所跟的就是就是遞歸的種子。在上麵的示例中,種子是 為 任意傳進去的參數
後麵的""如果缺省:則隻能查詢到符合條件的起始行,並不進行遞歸查詢;
後麵所放的字段是有關係的,它指明了查詢的方向。如果後麵放的是則表明從本節點查向葉子節點;如果後麵放的是則表明從根節點查向本節點; 文章轉自莊周夢蝶  ,原文發布時間5.17

最後更新:2017-05-17 12:01:57

  上一篇:go  使用 HttpWebRequest 向網站提交數據
  下一篇:go  從MySQL中的double write問題說開去