隨筆-17  評論-64  文章-79  trackbacks-1
          ORACLE查詢樹型關系(connect by prior start with)
          2007年07月26日 星期四 上午 10:26

          connect by prior start with 經常會被用到一個表中存在遞歸關系的時候。比如我們經常會將一個比較復雜的目錄樹存儲到一個表中。或者將一些部門存儲到一個表中,而這些部門互相有隸屬關系。這個時候你就會用到connect by prior start with。

          典型的使用方法就是:
          select * from table connect by prior cur_id=parent_id start with cur_id=???
          例如:
          a          b
          1         0
          2         1
          3         1
          4         2
          5         3

          如果想查找a=2及其下面的所有數據,則:
          select * from table connect by prior a=b start with a=2
          a         b
          2         1
          4         2

          這些只是基礎,皮毛。其實只要你靈活的構造查詢語句。可以得出意想不到的結果。比如生成樹每一個路徑。
          但是這些記錄組成的樹必須正常才可以。如果有互為父子的情況,就會出現循環錯誤!

          示例:

          C_AREA_CDE  C_SNR_AREA
          1             
          101       1
             103       1   

          表數據

          select * from tb_cus_area_cde

          --子取父
          select * from tb_cus_area_cde a    
          CONNECT BY PRIOR   a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'

          --父取子
          select * from tb_cus_area_cde a    
          CONNECT BY PRIOR   a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null

          posted on 2007-09-12 13:12 飛鳥 閱讀(664) 評論(0)  編輯  收藏 所屬分類: 數據庫
          主站蜘蛛池模板: 石屏县| 延川县| 信宜市| 北碚区| 江北区| 浦东新区| 青川县| 嘉兴市| 吉水县| 平顶山市| 岑溪市| 昌乐县| 尚志市| 裕民县| 隆德县| 沂南县| 育儿| 辛集市| 南郑县| 类乌齐县| 广河县| 丹棱县| 沛县| 大姚县| 贵州省| 元谋县| 渭源县| 铜陵市| 三穗县| 霸州市| 五河县| 若尔盖县| 鹤岗市| 克东县| 方正县| 城步| 饶阳县| 葵青区| 景泰县| 西畴县| 息烽县|