萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle層次查詢和with函數的使用示例

Oracle層次查詢和with函數的使用示例

開發中大家應該都做過什麼類似部門管理這樣的功能,一般情況下一個部門下面還有下一級部門(子部門),這個層級就類似一棵樹。這種情況下一般會把父級部門 和子級部門分成2個或者多個表,這種算是比較常規的做法;有時可能為了數據表管理的方便 就把所有的部門放在一張表裡並加上一個字段標識部門之間的隸屬關系,這樣子看起來有點奇怪,但湊合用用還是Ok的。下面我跟大家分享下我的心得,也就是基 於這種設計怎麼做數形圖,簡單的做法就是查詢出一個list集合就可以,要怎麼辦呢先來看下我的數據表

 
不難看出部門之間用fparent關聯,那sql語句怎麼寫呢,下面是一種偷懶的寫法

復制代碼 代碼如下:
-- ||是連接符,level可以看成常量
select t.fnum,LPAD(' ',3*level-3)||'|-'||fname fname,t.fparent,Level lev
From m_depart t
--start with後面是條件1
start with fparent is null
--connect by Prior後面是條件2
connect by Prior fnum=fparent


下面是查詢結果,查詢結果和數非常接近

 
差不多了下面還有一個比較常用的with函數,一般做復雜查詢可能會用到,可以參考下面的文章

copyright © 萬盛學電腦網 all rights reserved