維護樹狀資料
給定一個樹,要求查詢所有狀態為"異常"的葉子節點的所有上級節點
查詢表資料如下.因為節點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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 二維樹狀陣列陣列
- 資料庫常用維護命令資料庫
- 資料結構——樹狀陣列資料結構陣列
- 六、資料庫管理與維護資料庫
- 樹狀的資料結構的建立資料結構
- SAP RETAIL MM41維護商品主資料的時候可以維護分類資料AI
- JS遍歷樹狀資料,選擇需要的欄位重構一個新的樹狀資料JS
- nodebb搭建 維護 discuz 資料遷移
- 線段樹維護單調棧——區間查詢版本 & 維護遞減序列
- 線段樹維護區間等差數列
- 最佳化半群結構的線段樹資訊維護
- 29. 使用MySQL之資料庫維護MySql資料庫
- 《大型資料庫技術》MySQL管理維護資料庫MySql
- 樹狀資料結構儲存方式—— CUD 篇資料結構
- 山海經:線段樹維護最大子段和
- 樹狀資料結構儲存方式——查詢篇資料結構
- 資料結構之真別多想—樹狀陣列資料結構陣列
- 維護區間資訊
- 網站怎樣利用整體性防護策略維護資料安全?網站
- Access資料庫日常維護和Access資料庫最佳化方法資料庫
- Hybris產品主資料的價格折扣維護
- [MySQL光速入門]029 資料庫管理和維護MySql資料庫
- restapi(0)- 平臺資料維護,寫在前面RESTAPI
- 如何避免重複性地做資料維護頁面?
- 開發資料大全(個人整理,長期維護)
- CF580E Kefa and Watch (線段樹維護雜湊)
- HDU 6274 Master of Sequence(思維+樹狀陣列+二分)AST陣列
- 1.7. 建立和維護資料庫密碼檔案資料庫密碼
- Databricks 第6篇:Spark SQL 維護資料庫和表SparkSQL資料庫
- SAP QM QA08批次維護QMAT資料
- python爬取股票最新資料並用excel繪製樹狀圖PythonExcel
- SAP SD基礎知識之信用範圍資料維護
- Oracle日曆表維護實踐:建表、準備資料Oracle
- 樹狀陣列陣列
- 淘寶二面:千萬級資料中如何用Redis維護熱點資料"?Redis
- python爬取基金股票最新資料,並用excel繪製樹狀圖PythonExcel
- 達夢資料庫主備實時叢集搭建和維護資料庫
- SAP SD基礎知識之維護中央信貸主資料
- SAP RETAIL MM42維護商品採購資訊記錄資料的缺陷AI