Oracle層次化查詢(新)

2021-08-25 01:38:27 字數 709 閱讀 4790

今天要通過乙個組織機構樹通過得到機構編號向上得到所有的父級機構的使用者列表。

怎麼辦,肯定是用層次化查詢了。

記得原來的文章裡邊有帖子。。。。黏貼過來。。。結果發現會報錯:ora-01436

這個是因為父節點和子節點有鏈結上的錯誤,可能會出現迴圈。(就是父節點的父節點又鏈結到子節點一樣,有死迴圈)

後來沒辦法。

最後再itpub上看見了乙個nocycle的關鍵字,就是用來防止死迴圈這種情況的。

加上就好了:

select level, t.* from table_name t

start with column_name=?

connect by nocycle prior column_father_name=column_name;

level是乙個關鍵字,用在層次化查詢中,用於標識該行結果所在的層次。查詢出來的level是數字。

注:這樣子查到的是所有的父機構,但是關鍵字level,就是第幾層是反著的,也就是說level越大,他越是高階機構。

要查子機構,最後的prior之後換成column_name=column_father_name就可以了。

oracle 層次化查詢

1 層次化查詢 層次化 同一資料庫表中多條資料存在父子關係,形成樹狀結構。利用connect by 進行層次化查詢 按照某種規則,獲得節點路徑上的節點集合。如 select from market b start with b m id 10 b connect by prior b p id m ...

Oracle 層次化查詢

create table employees employee id integer constraint employees pk primary key,manager id integer constraint employees fk employees references employe...

Oracle層次化查詢學習總結

1.1 概要 2 1.2 節點術語 2 1.3 使用connect by 和 start with子句3 1.4 層次查詢例項 3 1.5 從下向上查詢 4 1.6 從層次查詢中刪除節點和分支5 備註 無法顯示,請到文庫檢視 1.1 概要 我們經常可以見到組織為層次的資料,比如乙個公司的工作的人員就...