資源描述:
《oracle樹形結(jié)構(gòu)查詢》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、Oracle樹形結(jié)構(gòu)實現(xiàn)?我突然看見了一個函數(shù)CONNECT?BY,就想起以前想做一個樹形的結(jié)構(gòu):就是大類型表TB_INDUSTRYCATALOGUE中有字段INDUSTRYCATALOGUEID,name?小類型表TB_INDUSTRYNAME中有字段INDUSTRYNAMEID,INDUSTRYCATALOGUEID,name要實現(xiàn)每個大類型名下有樹形的小類型名。1.先創(chuàng)建一個表aabb,字段為id,name導(dǎo)入TB_INDUSTRYCATALOGUE表中的數(shù)據(jù):insert?into?aabb(id,name)select?INDUSTRYCATALOGUE
2、ID,namefrom??TB_INDUSTRYCATALOGUE;2.在表aabb中加一個字段pid更改字段pid都為0????Update?aabbset?pid=’0’;3.類似創(chuàng)建表aa結(jié)構(gòu)和TB_INDUSTRYNAME一樣,導(dǎo)入TB_INDUSTRYNAME表的數(shù)據(jù)????Insert?into?aa????Select?*?from?TB_INDUSTRYNAME;4.有可能小類型表中的INDUSTRYNAMEID和大類型表中的INDUSTRYCATALOGUEID有重復(fù)的數(shù)據(jù),這樣就會造成CONNECT?BY循環(huán)出錯,第一次我就出現(xiàn)這個錯誤,所以避
3、免重復(fù)可以把aa中的INDUSTRYNAMEID都加一個很大的數(shù)和INDUSTRYCATALOGUEID錯開,我加了1000。????Update?aa?set?INDUSTRYNAMEID=to_char(to_number(INDUSTRYNAMEID)+1000);5.這樣就可把aa的數(shù)據(jù)導(dǎo)入aabb了。????Insert?into?aabb(id,pid,name)????Select?INDUSTRYNAMEID,INDUSTRYCATALOGUEID,name?from?aa;6.這樣就可以查詢了:為了效果好點可以先設(shè)一下頁的大小?Setpagesi
4、ze1000其實SYS_CONNECT_BY_PATH這個函數(shù)是oracle9i才新提出來的!??它一定要和connect?by子句合用!第一個參數(shù)是形成樹形式的字段,第二個參數(shù)是父級和其子級分隔顯示用的分隔符.??說白了這個函數(shù)的作用就是為你清楚的構(gòu)建出樹結(jié)構(gòu)的查詢結(jié)果。?selectSYS_CONNECT_BY_PATH(name,??'>')namee?fromaabb?startwithpid='0'?connectbypriorid=pid;>環(huán)保>環(huán)保>廢紙>環(huán)保>廢金屬>環(huán)保>紡織廢料>環(huán)保>公共環(huán)衛(wèi)設(shè)施>環(huán)保>環(huán)保監(jiān)測儀器>環(huán)保>環(huán)保產(chǎn)品加工>交通
5、運輸工具>交通運輸工具>電梯、纜車及配件>交通運輸工具>飛行器及配件>交通運輸工具>集裝箱>交通運輸工具>二手交通產(chǎn)品及用具selectLPAD('?',4*level-1)
6、
7、namenameefromaabbstartwithpid='0'connectbypriorid=pid;環(huán)保???廢紙???廢金屬???紡織廢料???皮革廢料???化工廢料???電子漿料交通運輸工具???電梯、纜車及配件???飛行器及配件???集裝箱