Oracle 樹狀查詢

2021-06-18 03:10:15 字數 1721 閱讀 7122

筱公尺加步槍 posted @ 2023年8月18日 23:01 in 

[ 資料庫 ] with tags 

oracle

樹狀, 950 閱讀

在實際應用中,經常利用資料庫儲存樹狀結構的資料,通常用一張表中的兩個字段表示,乙個是自身的id,乙個是儲存父類的id。在這樣具有這種關係中的資料,要求查出的資料具有我們想要的樹狀顯示。這裡需要引入oracle的乙個查詢語句。

?sql-樹狀查詢

1

2

3

4

select*fromtablename

startwith[condition1]

connectbyprior[condition2]

where[condition3]

condition1 通常是用於篩選某顆樹或者多顆樹的結點,這裡所的樹包括子樹,

condtion2 通常是用於連線父結點和子結點的關係,prior 所表示的是上一條記錄,通常用法:prior id = pid,(上一條的的id號是本條記錄的父類id號)這樣就把整個樹狀結構給建立起來了。

conditon3 就是我們通常的where語句,過濾某些記錄。

現在看下具體例子。

其中test_id 表示本身的id,test_pid表示父類的id

這邊記錄的描述成樹狀結構就是如下:

現在,假設我們查詢的福州以及福州下的所有子東西,就可以這樣查詢,

只要取福州的根結點就可以,福州的根結點翻譯成資料庫中存的資料就是 test_id =1

因此得到的sql如下:

?查詢福州包括福州下的子城市

1

2

3

select*fromtest_ t

startwithtest_id = 1

connectbypriortest_id = test_pid

查詢結果:

用結構圖表示就是如下資訊:

因此想要查詢某些資訊,只要抓住根結點的條件就可以。。over~~

oracle 樹狀查詢

connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with 條件1 connect by 條件2 where 條件3 例 select from table start with org id hbhqfwgwpy connect by...

oracle 樹狀查詢

connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with 條件1 connect by 條件2 where 條件3 例 select from table start with org id hbhqfwgwpy connect by...

oracle 樹狀查詢

connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with 條件1 connect by 條件2 where 條件3 例 select from table start with org id hbhqfwgwpy connect by...