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

          connect by prior start with 經(jīng)常會被用到一個表中存在遞歸關(guān)系的時候。比如我們經(jīng)常會將一個比較復雜的目錄樹存儲到一個表中。或者將一些部門存儲到一個表中,而這些部門互相有隸屬關(guān)系。這個時候你就會用到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及其下面的所有數(shù)據(jù),則:
          select * from table connect by prior a=b start with a=2
          a         b
          2         1
          4         2

          這些只是基礎(chǔ),皮毛。其實只要你靈活的構(gòu)造查詢語句??梢缘贸鲆庀氩坏降慕Y(jié)果。比如生成樹每一個路徑。
          但是這些記錄組成的樹必須正常才可以。如果有互為父子的情況,就會出現(xiàn)循環(huán)錯誤!

          示例:

          C_AREA_CDE  C_SNR_AREA
          1             
          101       1
             103       1   

          表數(shù)據(jù)

          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 飛鳥 閱讀(669) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫
          主站蜘蛛池模板: 凭祥市| 麻江县| 德令哈市| 新巴尔虎左旗| 黔江区| 尚志市| 那曲县| 如东县| 遵义市| 临安市| 大邑县| 扎兰屯市| 乳山市| 虞城县| 琼结县| 犍为县| 武川县| 河北省| 教育| 宜兰县| 平乡县| 镇安县| 嘉禾县| 射阳县| 西贡区| 博罗县| 宝应县| 泾川县| 赤壁市| 塘沽区| 灵武市| 肇源县| 田东县| 靖州| 漳浦县| 绵竹市| 礼泉县| 察哈| 方山县| 宝应县| 宜黄县|