Oracle層次查詢和with函數(shù)的使用示例
更新時間:2013年07月02日 11:43:05 作者:
下面我跟大家分享下我的心得,也就是基于這種設(shè)計怎么做數(shù)形圖,簡單的做法就是查詢出一個list集合就可以,要怎么辦呢先來看下我的數(shù)據(jù)表
開發(fā)中大家應該都做過什么類似部門管理這樣的功能,一般情況下一個部門下面還有下一級部門(子部門),這個層級就類似一棵樹。這種情況下一般會把父級部門和子級部門分成2個或者多個表,這種算是比較常規(guī)的做法;有時可能為了數(shù)據(jù)表管理的方便 就把所有的部門放在一張表里并加上一個字段標識部門之間的隸屬關(guān)系,這樣子看起來有點奇怪,但湊合用用還是Ok的。下面我跟大家分享下我的心得,也就是基于這種設(shè)計怎么做數(shù)形圖,簡單的做法就是查詢出一個list集合就可以,要怎么辦呢先來看下我的數(shù)據(jù)表
不難看出部門之間用fparent關(guān)聯(lián),那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
下面是查詢結(jié)果,查詢結(jié)果和數(shù)非常接近
差不多了下面還有一個比較常用的with函數(shù),一般做復雜查詢可能會用到,可以參考下面的文章

不難看出部門之間用fparent關(guān)聯(lián),那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
下面是查詢結(jié)果,查詢結(jié)果和數(shù)非常接近

差不多了下面還有一個比較常用的with函數(shù),一般做復雜查詢可能會用到,可以參考下面的文章
相關(guān)文章
Oracle中分組查詢group by用法規(guī)則詳解
這篇文章主要介紹了Oracle中分組查詢group by用法規(guī)則詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07Hibernate Oracle sequence的使用技巧
本文介紹了關(guān)于Hibernate中如何使用Oracle sequence的問題以及應注意的事項。2009-06-06Oracle查詢語句中rownum與rowid的不同之處分析
這篇文章主要介紹了Oracle查詢語句中rownum與rowid的不同之處分析,需要的朋友可以參考下2014-07-07Oracle中scott表結(jié)構(gòu)與簡單查詢實例分析
這篇文章主要介紹了Oracle中scott表結(jié)構(gòu)與簡單查詢,實例分析Oracle查詢的相關(guān)技巧,需要的朋友可以參考下2015-04-04