語法
select col1, col2, ... from table [where condition ...] start with 要放在最上層的條件 connect by [prior] Child_Column = Parent_Column [order [siblings] by sort ...]
p.s. 若 prior 有提供,則會查詢出本階與其所有下階資料。
p.s. 若 prior 無提供,則只查詢出本階資料。
p.s. 若 siblings 有提供,則會按父子階層排序,再按指定欄位排序。
p.s. 若 siblings 無提供,則會按指定欄位排序。
p.s. Child_Column = Parent_Column,視為 "Child 的父階是哪個"。
p.s. 查詢會先按 start with 展開 Treeview,再過濾 where 條件。
範例
-- 建立 Temp Table create 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, '1' ); insert into tom_tree values( 2, 0, '2' ); insert into tom_tree values( 3, 1, '1_1' ); insert into tom_tree values( 4, 1, '1_2' ); insert into tom_tree values( 5, 2, '2_1' ); insert into tom_tree values( 6, 2, '2_2' ); insert into tom_tree values( 7, 2, '2_3' ); commit; -- Treeview 查詢 select level , tree_name , lpad( ' ', (Level - 1) * 3, ' ') || tree_name -- 增加這個欄位的顯示, 會有層次感 from tom_tree start with parent_id is null connect by prior tree_id = parent_id;
這種 Treeview 查詢, 應用於 BOM 表查詢, 是非常方便的, 希望對各位有所幫助.