Oracle PL/SQL: Treeview 樹狀查詢
HOW TO WORK WITH DOWNLINE HIERARCHIES IN ORACLE
Google 關鍵字 "oracle connect by" "oracle start with"
那就一次先全部select出來再處理,一般部門數了不起上千個,
一次select後處理是比較適合的作法。
照 尼克 大實作範例
-- ==== 測試資料 ====
-- 建立 Temp Table
commit; --Commit 後, 資料被刪除.
create Global Temporary table tom_tree(
tree_id number
, parent_id number
, tree_name varchar2(30)
);
-- 新增資料
insert into tom_tree values( 0, null, 'TOP' );
insert into tom_tree values( 1, 0, '總經辦' );
insert into tom_tree values( 2, 0, '製造' );
insert into tom_tree values( 3, 1, '資訊部' );
insert into tom_tree values( 4, 1, '管理部' );
insert into tom_tree values( 5, 2, '制一課' );
insert into tom_tree values( 6, 2, '制二課' );
insert into tom_tree values( 7, 2, '製三課' );
select * from tom_tree; --驗證資料是否正確
-- Treeview 查詢
select level 第幾階
, tree_name
, lpad( ' ', (Level - 1) * 3, ' ') || tree_name as 結果
from tom_tree
start with parent_id is null
connect by prior tree_id = parent_id;