維護樹狀資料
給定一個樹,要求查詢所有狀態為"異常"的葉子節點的所有上級節點
查詢表資料如下.因為節點109,107狀態為異常,所以需要查他們的所有上級節點,即100,101,108,102,103
外連線方法
1.查詢狀態為異常的葉子節點
2.查詢所有非葉子節點(他們擁有子節點)
3.不等連線
檢視t1的資料
樹遍歷方法
1.找到所有狀態為異常的葉子節點
2.自底向上遍歷
-
create table t as select employee_id id,manager_id pid ,'正常' status from hr.employees;
- update t set status='異常' where id in ('109','107');
-
SQL> select sys_connect_by_path(id,'/') path,status from t start with pid is null connect by pid=prior id;
-
-
PATH STAT
-
-------------------- ----
-
/100 正常
-
/100/101 正常
-
/100/101/108 正常
-
/100/101/108/109 異常
-
/100/101/108/110 正常
-
/100/101/108/111 正常
-
/100/101/108/112 正常
-
/100/101/108/113 正常
-
/100/101/200 正常
-
/100/101/203 正常
-
/100/101/204 正常
-
/100/101/205 正常
-
/100/101/205/206 正常
-
/100/102 正常
-
/100/102/103 正常
-
/100/102/103/104 正常
-
/100/102/103/105 正常
-
/100/102/103/106 正常
-
/100/102/103/107 異常
-
/100/114 正常
-
/100/114/115 正常
-
/100/114/116 正常
-
/100/114/117 正常
- ....以下內容省略
-
- 已選擇107行。
1.查詢狀態為異常的葉子節點
2.查詢所有非葉子節點(他們擁有子節點)
3.不等連線
-
select distinct t2.pid from (
-
select id,pid,status,sys_connect_by_path(id,':') path from t
-
where connect_by_isleaf=1 and status='異常'
-
start with pid is null connect by pid=prior id) t1
-
inner join (
-
select distinct pid from t where pid is not null) t2
- on instr(t1.path,':'||t2.pid)!=0;
-
ID PID STAT PATH
-
--- ---------- ---- ----------------
-
109 108 異常 :100:101:108:109
- 107 103 異常 :100:102:103:107
1.找到所有狀態為異常的葉子節點
2.自底向上遍歷
-
with v1 as(
-
select pid from t where connect_by_isleaf=1 and status='異常' start with pid is null connect by pid=prior id
-
)
- select distinct t.id from t start with t.id in (select v1.pid from v1) connect by prior pid=id;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-777280/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 物料主資料的維護狀態
- hdu 4368 樹狀陣列 離線維護陣列
- 二維樹狀陣列陣列
- 資料維護和基礎架構維護-有感架構
- 維護資料庫安全資料庫
- 樹型結構資料在資料庫基本表中的儲存及維護 (轉)資料庫
- 資料庫常用維護命令資料庫
- Oracle資料庫日常維護Oracle資料庫
- 深入FDO----資料維護
- 資料結構——樹狀陣列資料結構陣列
- AC dreamoj 1011 樹狀陣列+hash維護字串的字首和陣列字串
- 六、資料庫管理與維護資料庫
- Nagios資料提取和維護iOS
- SAP RETAIL MM41維護商品主資料的時候可以維護分類資料AI
- 樹狀的資料結構的建立資料結構
- JS遍歷樹狀資料,選擇需要的欄位重構一個新的樹狀資料JS
- nodebb搭建 維護 discuz 資料遷移
- ORACLE資料庫管理維護綱要Oracle資料庫
- 線段樹維護單調棧——區間查詢版本 & 維護遞減序列
- 線段樹維護區間等差數列
- 【二維樹狀陣列】poj 2155 Matrix陣列
- 二維樹狀陣列-poj2155陣列
- poj 1195 二維樹狀陣列陣列
- 《大型資料庫技術》MySQL管理維護資料庫MySql
- Oracle資料庫維護的重要性Oracle資料庫
- 【轉】Oracle資料庫日常維護手冊Oracle資料庫
- oralce動態維護資料庫的序列資料庫
- Informix_on_line資料庫維護技巧ORM資料庫
- Oracle資料庫中索引的維護 ztOracle資料庫索引
- PostgreSQL學習手冊(資料庫維護)SQL資料庫
- Oracle資料庫日常維護手冊 (zt)Oracle資料庫
- Oracle資料庫中索引的維護(zt)Oracle資料庫索引
- Oracle資料庫中索引的維護(轉)Oracle資料庫索引
- 樹狀資料結構儲存方式—— CUD 篇資料結構
- 二維樹狀陣列--poj1195陣列
- SAP QM QA08批次維護QMAT資料
- 開發資料大全(個人整理,長期維護)
- 資料庫自動維護任務的管理資料庫