Oracle層次查詢和with函數的使用樣本

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.