ORACLE查詢樹型關系

          ORACLE查詢樹型關系(connect by prior start with)

          以下內容來自http://hi.baidu.com/suofang/blog/item/a58bdd5829d5e583800a1812.html(其中的圖片可到這個地址查看)
          connect by prior start with 經(jīng)常會被用到一個表中存在遞歸關系的時候。比如我們經(jīng)常會將一個比較復雜的目錄樹存儲到一個表中。或者將一些部門存儲到一個表中,而這些部門互相有隸屬關系。這個時候你就會用到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
          這些只是基礎,皮毛。其實只要你靈活的構造查詢語句。可以得出意想不到的結果。比如生成樹每一個路徑。
          但是這些記錄組成的樹必須正常才可以。如果有互為父子的情況,就會出現(xiàn)循環(huán)錯誤!
          示例:

          '800')this.width='800';if(this.height>'600')this.height='600';" border=0>
          表結構圖
          '800')this.width='800';if(this.height>'600')this.height='600';" border=0>
          表數(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

          *************************自己總結 還是看CSDN吧,賽迪總是不好用http://writeblog.csdn.net/PostList.aspx*********************************
          ORACLE查詢樹型關系(connect by prior start with
          有如下表結構:
          create table TVideoSort
          (
          FsysId       NVARCHAR2(32 char)       not null,
          FSortName       NVARCHAR2(32 char),
          FSortTopId     NVARCHAR2(32 char),
          FSortAddress     number,
          FSortIsList     char(1),
          constraint PK_TVIDEOSORT primary key (FsysId)
          );





          數(shù)據(jù)如下:




          --子查父(通過子節(jié)點向根節(jié)點追朔.
          查詢〔特下邊〕的父節(jié)點
          select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList from TVideoSort
          start with FsysId=
          '3703E5CD81E48D6BE040007F01001254'--這個是特下邊的fsysid
          connect by prior
          FSortTopId=FsysId
          order by FsortAddress

          結果




          ――父查子(通過根節(jié)點遍歷子節(jié)點.

          查詢〔特下邊〕的子節(jié)點:結果
          select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
          from TVideoSort start with FsysId=
          '3703E5CD81E48D6BE040007F01001254' --這個是特下邊的fsysid
          connect by prior FsysId=FSortTopId order by FsortAddress



          查詢〔特長練習〕的子節(jié)點:結果
          select FsysId,FSortName,FSortTopId,FSortAddress,FSortIsList
          from TVideoSort start with FsysId=
          '36AE4D68EC7D364CE040007F01000CA5'
          connect by prior
          FsysId=FSortTopId order by FsortAddress





          特別注意,兩個查詢只是
          FsysId=FSortTopId不同而已,即子查父則把FSortTopId做為主表放前面,父查子則把FsysId放前面作主表

          posted on 2007-11-30 13:51 Tom 閱讀(2081) 評論(0)  編輯  收藏 所屬分類: DB

          <2007年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類(42)

          隨筆檔案(43)

          文章分類

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 遵义县| 盐边县| 呼伦贝尔市| 昭平县| 华阴市| 兴隆县| 台北县| 新竹市| 香格里拉县| 沿河| 平武县| 云霄县| 邯郸市| 碌曲县| 林州市| 来安县| 柞水县| 新巴尔虎右旗| 峨眉山市| 金华市| 恩施市| 庆阳市| 芮城县| 浮梁县| 黄龙县| 定边县| 孟连| 中卫市| 通渭县| 饶平县| 姚安县| 沾益县| 凭祥市| 微山县| 太仓市| 深水埗区| 永城市| 荆门市| 房产| 资源县| 凌海市|