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