程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle層次查詢和with函數的使用示例

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

編輯:關於Oracle數據庫

    開發中大家應該都做過什麼類似部門管理這樣的功能,一般情況下一個部門下面還有下一級部門(子部門),這個層級就類似一棵樹。這種情況下一般會把父級部門 和子級部門分成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函數,一般做復雜查詢可能會用到,可以參考下面的文章

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved