欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

oracle分層查詢中的start with和connect by(樹

系統 3107 0
來源: ?http://blog.csdn.net/itmyhome1990/article/details/16338637
?
ORACLE是一個關系數據庫管理系統,它用表的形式組織數據,在某些表中的數據還呈現出樹型 結構的聯系。
?例如有如下案例:
oracle分層查詢中的start with和connect by(樹結構查詢)

數據為節選,字段值含義分別為 稅務機構代碼、稅務機構名稱、上級稅務機構代碼,稅務機構級別
select * from extern_dm_swjg查詢的時候默認順序就是上面的順序,可以看出是混亂的并沒有特殊結構特征。

而希望的結果如下圖:
oracle分層查詢中的start with和connect by(樹結構查詢)
sj_swjg_dm為空即根節點的排在第一個,仔細觀察 上圖是樹結構查詢結果,可能不太直觀,看下圖就清楚了
oracle分層查詢中的start with和connect by(樹結構查詢)

1. 樹結構的描述?
樹結構的數據存放在表中,數據之間的層次關系即父子關系,通過表中的列與列間的關系來描述,
通過每個節點的父節點,就可以確定整個樹結構。
在SELECT命令中使用CONNECT BY和START WITH 子句可以查詢表中的樹型結構關系。其命令格式如下:
SELECT ...?
CONNECT BY {PRIOR 列名1=列名2|列名1=PRIOR 列名2}?
[START WITH]...?
其中: CONNECT BY子句說明每行數據將是按層次順序檢索 ,并規定將表中的數據連入樹型結構的關系中。PRIORY運算符必須放置在連接關系的兩列中某一個的前面。對于節點間的父子關系,PRIOR運算符在的一側表示父節點,在另一側表示子節點, 從而確定查找樹結構是的順序是自頂向下還是自底向上 。
START WITH 子句為可選項,用來標識哪個節點作為查找樹型結構的根節點。若該子句被省略,則表示所有滿足查詢條件的行作為根節點。

例1?以樹結構方式顯示表的數據。
  1. select?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. connect? by? prior?swjg_dm?=?sj_swjg_dm??
  4. start? with?sj_swjg_dm? is? null??

2. 關于PRIOR?
運算符PRIOR被放置于等號前后的位置,決定著查詢時的檢索順序。

例2從節點開始自底向上查詢
  1. select?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. connect? by??swjg_dm?=?? prior?sj_swjg_dm??
  4. start? with?swjg_dm?=? '16107100004'??

3.使用LEVEL?
??? 在具有樹結構的表中,每一行數據都是樹結構中的一個節點,由于節點所處的層次位置不同,所以每行記錄都可以有一個層號。層號根據節點與根節點的距離確定。不論從哪個節點開始,該起始根節點的層號始終為1,根節點的子節點為2, 依此類推。?
??? 在查詢中,可以使用偽列LEVEL顯示每行數據的有關層次。LEVEL將返回樹型結構中當前節點的層次,我們可以使用LEVEL來控制對樹型結構進行遍歷的深度。
?
例3 顯示表中的各行數據及層號。
  1. select? level,?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. connect? by? prior?swjg_dm?=?sj_swjg_dm??
  4. start? with?sj_swjg_dm? is? null??

偽列LEVEL為數值型,可以在SELECT 命令中用于各種計算。?

例4 使用LEVEL改變查詢結果的顯示形式。
  1. select?LPAD( LEVEL, LEVEL*3, '?')? as? "LEVEL",?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. connect? by? prior?swjg_dm?=?sj_swjg_dm??
  4. start? with?sj_swjg_dm? is? null???

在SELECT使用了函數LPAD,關于LPAD函數的使用,請參閱 Oracal的Lpad函數
4.節點和分支的裁剪?
??? 在對樹結構進行查詢時,可以去掉表中的某些行,也可以剪掉樹中的一個分支,使用WHERE子句來限定樹型結構中的單個節點,以去掉樹中的單個節點,但它卻不影響其后代節點(自頂向下檢索時)或前輩節點(自底向頂檢索時)。

例5 ?僅剪去了樹中單個節點16107100003?扶風縣國家稅務局
  1. select?LPAD( LEVEL, LEVEL*3, '?')? as? "LEVEL",?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. where?swjg_dm?!= '16107100003'??
  4. connect? by? prior?swjg_dm?=?sj_swjg_dm??
  5. start? with?sj_swjg_dm? is? null??
oracle分層查詢中的start with和connect by(樹結構查詢)
?在這個查詢中,僅剪去了樹中單個節點swjg_dm為16107100003的,可它的子節點依然存在。若希望剪去樹結構中的某個分支,
?則要用CONNECT BY 子句。CONNECT BY 子句是限定樹型結構中的整個分支,既要剪除分支上的單個節點,
?也要剪除其后代節點(自頂向下檢索時)或前輩節點(自底向頂檢索時)。

例6 ?除去節點16107100003的一支
  1. select?LPAD( LEVEL, LEVEL*3, '?')? as? "LEVEL",?swjg_dm,swjg_mc,sj_swjg_dm,swjg_level??
  2. from?extern_dm_swjg??
  3. connect? by? prior?swjg_dm?=?sj_swjg_dm??
  4. and?swjg_dm?!= '16107100003'??
  5. start? with?sj_swjg_dm? is? null??
oracle分層查詢中的start with和connect by(樹結構查詢)
? ? 這個查詢結果就與例5不同,除了剪去單個節點 16107100003?外,還將 16107100003?的子節點16107100004剪掉,即把 16107100003??這個分支剪掉了。?
??? 當然WHERE子句可以和CONNECT BY子句聯合使用,這樣能夠同時剪掉單個節點和樹中的某個分支。
?
在使用SELECT 語句來報告樹結構報表時應當注意,CONNECT BY子句不能作用于出現在WHERE子句中的表連接。如果需要進行連接,可以先用樹結構建立一個視圖,再將這個視圖與其他表連接,以完成所需要的查詢。

oracle分層查詢中的start with和connect by(樹結構查詢)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美成人黑人视频免费观看 | 成人精品视频 | 精品国产三级在线观看 | 一区二区三区在线播放 | 免费av一区二区三区 | 色综合久久88色综合天天 | 美女被免费网站在线视频九色 | 欧美视频成人 | 国内精品久久毛片一区二区 | 免费a视频在线观看 | 狠狠操伊人| 久久噜噜噜精品国产亚洲综合 | 九九毛片| 欧美日韩成人影院 | 国产福利资源在线 | 99精品视频在线这里只有 | 欧美专区在线 | 四虎884aa永久播放地址http | 午夜刺激视频 | 777色狠狠一区二区三区香蕉 | 99色综合 | 欧美成人精品一区二区男人看 | 亚洲免费视频网 | 午夜特级毛片 | 波多野吉衣一区二区三区四区 | 日韩精品一区二区三区视频播放 | 亚洲影视在线 | 波多野结衣亚洲一区二区三区 | 国产小视频在线 | 国产69久久久欧美黑人A片 | 特黄做愛又硬又大A片视频 小视频在线看 | 激情久久一区二区 | 国产福利视频在线观看 | 欧美a级片视频 | 日韩在线视频导航 | 又爽又黄又无遮挡的激情视频免费 | 天天综合色天天桴色 | 久久se精品一区二区国产 | 欧美a大片 | 日韩免费网站 | 久久精品国产99久久6动漫亮点 |