問題描述:
在數據庫中, 有一種比較常見得 設計模式, 層級結構 設計模式, 具體到 Oracle table中, 字段特點如下:
ID, DSC, PID;
三個字段, 分別表示 當前標識的 ID(主鍵), DSC 當前標識的描述, PID 其父級ID, 比較典型的例子 是 國家, 省, 市 這種層級結構;
省份歸屬於國家, 因此 PID 為 國家的 ID, 以此類推;

參考路徑: http://blog.csdn.net/weiwenhp/article/details/8218091

條件1: 表示從哪個節點開始查找, 也就是通過條件1 查詢到的數據, 作為后續查詢的起始節點(參數).
當然可以放寬限定條件,如 ID in ('00001', '00011')以取得多個根節點,也就是多棵樹;在連接關系中,除了可以使用列明外,還允許使用列表達式。
如果省略Start With
就默認把所有滿足查詢條件的Tree整個表中的數據從頭到尾遍歷一次,每一個數據做一次根,然后遍歷樹中其他節點信息.
條件2: 是連接條件,其中用PRIOR表示上一條記錄,例如CONNECT BY PRIOR ID = PID,意思就是上一條記錄的ID是本條記錄的PID,即本記錄的父親是上一條記錄。CONNECT BY子句說明每行數據將是按照層次順序檢索,並規定將表中的數據連入樹形結構的關系中。
Prior 在父節點的一側表示, 自底向上查, 在 子節點的一側表示 自上向下查詢;
條件3: 不能用在 Connect By 后, 這里的條件判斷, 等價於 在最后查詢出結果列表之后, 再進行條件篩選; 並非 刪除掉 節點及子節點;
參考來自:https://www.cnblogs.com/zyzdisciple/p/7873584.html
