ORACLE查詢樹(shù)型關(guān)系

          ORACLE查詢樹(shù)型關(guān)系(connect by prior start with)

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

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

          *************************自己總結(jié) 還是看CSDN吧,賽迪總是不好用http://writeblog.csdn.net/PostList.aspx*********************************
          ORACLE查詢樹(shù)型關(guān)系(connect by prior start with
          有如下表結(jié)構(gòu):
          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ù)如下:




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

          結(jié)果




          ――父查子(通過(guò)根節(jié)點(diǎn)遍歷子節(jié)點(diǎn).

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



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





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

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)(42)

          隨筆檔案(43)

          文章分類(lèi)

          相冊(cè)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 华宁县| 金阳县| 西乌珠穆沁旗| 陕西省| 汪清县| 都兰县| 扎囊县| 乌拉特后旗| 商水县| 成武县| 鸡东县| 长岭县| 汽车| 彝良县| 周宁县| 延安市| 增城市| 黄骅市| 囊谦县| 永和县| 合川市| 滁州市| 华坪县| 锡林浩特市| 惠来县| 灵武市| 慈溪市| 珠海市| 西畴县| 腾冲县| 兰西县| 山东省| 信宜市| 波密县| 台中县| 碌曲县| 贺兰县| 南部县| 漯河市| 罗田县| 安义县|