SQL遞迴查詢實現組織機構樹

2021-08-01 16:10:08 字數 1335 閱讀 3705

系統用到的組織機構樹,要實現對當前節點以及其子節點的查詢,資料庫sql要用到遞迴查詢,這也是我第一次接觸sql的遞迴查詢。

先說一下什麼是遞迴查詢,簡單說來是將乙個樹狀結構儲存在一張表裡,比如乙個表中存在兩個字段:code,parent_code,那麼通過表示每一條記錄的parent是誰,就可以形成乙個樹狀結構,用上述語法的查詢可以取得這棵樹的所有記錄,其中:

條件1 是根結點的限定語句,當然可以放寬限定條件,以取得多個根結點,實際就是多棵樹。

條件2 是連線條件,其中用prior表示上一條記錄,比如 connect by prior code = parent_code;就是說上一條記錄的code 是本條記錄的parent_code,即本記錄的父親是上一條記錄。

條件3 是過濾條件,用於對返回的所有記錄進行過濾。

select  《檢索列》

from where start with connect by order by

【組織機構樹】

select a.name, a.types, a.code, a.parent_code

from organization a

start with a.code = '1'

connect by prior a.code = a.parent_code

order by a.sort asc

這樣可以查出所要資訊,還可以一次性查出來乙個clob結果集;

select wm_concat(code)

from organization a

start with a.code = '1'

connect by prior a.code = a.parent_code

order by a.sort asc

個人認為,這樣的結果集比較方便後台處理,不用將其分開,用 in 就可以,順便說一下,樹的外掛程式是用的ztree。

【查詢根節點或某層父節點】

因為專案的業務中,要做組織機構樹,用到的時候會根據登陸使用者許可權顯示不同層級,或者業務流程中需要用到某一層級的父節點或者根節點,當只有某個葉子節點或者子節點時,可以反向遞迴出父節點到根節點的所有節點。

select wm_concat(code)

from organization a

start with a.parent_code = '1'

connect by a.code = prior a.parent_code

order by a.sort asc

組織機構樹查詢

組織機構樹遞迴查詢 查詢父級節點的所有子節點 select organizational id,organizational name,parent id from sys organizational where is used 1 start with parent id 父級節點id conn...

java 遞迴查詢組織機構樹

需求 不要在資料庫層寫儲存過程或者呼叫資料庫自帶方法實現,因為資料庫有可能是mysql或者是oracle。核心遞迴 description 遞迴查詢機構 param param departlist param param departid 設定檔案 return void 返回型別 throws ...

組織機構認證服務

專案需求 使用者和組織機構服務平台。1.單點登入 2.使用者和組織機構層級管理 初步不成熟設計 手動畫了一圖,字太醜,不好意思呈現,等週末有空補上 大致是這樣的 1.整體分三部分 1 外部單位 也就是單點登入白名單裡的單位 2 組織機構分很多單位,有層級劃分,比如市,區縣,校等 3 各個單位下的使用...