Oracle 10g 中的遞迴查詢 樹型查詢

2022-08-11 07:27:09 字數 2178 閱讀 7485

一、樹型表結構:

節點id  上級id  節點名稱

二、公式: 

select

節點id,節點名稱,

level

from

表connect 

byprior 節點id

=上級節點id

start 

with

上級節點id

=節點值

說明:1、常見的樹形結構為公司組織機構、地區……

2、求節點id以上的結構,或以上的結構,將「節點id=上級節點id」左右順序換一下即可。

3、level為oracle的特殊字段,表示「層」的意思。當前節點id的下一層節點為「1」。

測試sql: 1,建立表結構

create

table

dept(

departno  

varchar2(10

),departname  

varchar2(20

),topno    

varchar2(10

));插入資料: 

insert

into

dept 

values('

001','

董事會','

0');commit;

insert

into

dept 

values('

002','

總裁辦 ',

'001');

commit;

insert

into

dept 

values('

003','

財務部 ',

'001');

commit;

insert

into

dept 

values('

004','

市場部 ',

'002');

commit;

insert

into

dept 

values('

005','

公關部 ',

'002');

commit;

insert

into

dept 

values('

006','

銷售部 ',

'002');

commit;

insert

into

dept 

values('

007','

分銷處 ',

'006');

commit;

insert

into

dept 

values('

008','

業務拓展處',

'004');

commit;

insert

into

dept 

values('

009','

銷售科','

007'

);commit;

1,向前查 (從查詢本身一直到最上面的機構)

比如:select

distinct

departno,departname,

level

from

dept

connect 

byprior topno

=departno

start 

with

departno='

005'

;2,向後查:(從查詢本身一直到最下面的機構)

select

distinct

departno,departname,

level

from

dept

connect 

byprior departno

=topno

start 

with

topno='

001'

;cond2是連線條件,其中用prior表示上一條記錄,比如 connect by prior id=praentid就是說上一條記錄的id(比如根記錄)是(下一條)本條記錄的praentid,即本記錄的父親是上一條記錄。

Oracle 10g 中的遞迴查詢 樹型查詢

oracle 10g 中的遞迴查詢 樹型查詢 一 樹型表結構 節點id 上級id 節點名稱 二 公式 select 節點id,節點名稱,level from 表 connect by prior 節點id 上級節點id start with 上級節點id 節點值 說明 1 常見的樹形結構為公司組織機...

oracle10g 解除安裝

1 oracle 10g解除安裝軟體環境 1 windows xp oracle 10g2 oracle 安裝路徑為 d oracle 實現方法 1 開始 設定 控制面板 管理工具 服務停止所有 oracle 服務 2 開始 程式 oracle oradb 10g home1 oracle inst...

Oracle10g解除安裝

一 軟體解除安裝 1 windows xp oracle 10g 2 oracle安裝路徑為 d oracle 1 如果資料庫配置了自動儲存管理 asm 應該先刪除聚集同步服務css cluster synchronization services 刪除css服務的方法是在dos命令列中執行如下命令...