ORACLE中B樹結構查詢(start with …… connect by遞歸用法,同時涉及exists等)

一、簡介
這個start with … connect by子句主要是用於B樹結構類型的數據遞歸查詢,給出B樹結構類型中的任意一個結點,遍歷其最終父結點或者子結點。
二、應用場景
用於樹的查詢,下面是一個組織機構樹的案例。該組織機構樹設計了三張表ORGANIZATION、WORKER、 ORG_WORKER_REL三張表,其中ORG_WORKER_REL用於反映ORGANIZATION、WORKER之間的映射關係。三張表的數據截圖如下:
(1)ORGANIZATION表
在這裏插入圖片描述
(2)WORKER表
在這裏插入圖片描述
(3)ORG_WORKER_REL表
在這裏插入圖片描述
由此可看出,此設計的ORGANIZATION表B樹結構爲:
在這裏插入圖片描述
實現方法
問題:如何根據第一事業部的ORGANIZATION_ID獲取到其下所有的員工呢?(給出其中一個節點,求其最終子節點或最終父節點)。下面分佈來解析實現的思路,如果有員工不屬於項目一部、項目二部、項目三部,而是隻屬於第一事業部,或者是項目一部、項目二部、項目三部下面又分成了多個部門,如下的方法也實現了查詢,這也是遞歸查詢的意義。
(1)start with … connect by查詢ORGANIZATION
在這裏插入圖片描述
(2)查詢關聯表,得到所有的worker_id,注意exists的用法
在這裏插入圖片描述
(3)關聯查詢worker表得到需要的用戶信息
在這裏插入圖片描述

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