網(wǎng)站正在建設(shè)中 文案seo網(wǎng)站建站
概要
樹狀結(jié)構(gòu)通常由根節(jié)點(diǎn)、父節(jié)點(diǎn)(PID)、子節(jié)點(diǎn)(ID)和葉節(jié)點(diǎn)組成。
查詢語法
SELECT [LEVEL],*
FROM table_name
START WITH 條件1
CONNECT BY PRIOR 條件2
WHERE 條件3
ORDER BY 排序字段
說明:LEVEL—偽列,用于表示樹的層次(用于查詢結(jié)果所在層次,根節(jié)點(diǎn)的層次為1)
條件1—根節(jié)點(diǎn)的限定條件,當(dāng)然也可以放寬權(quán)限,以獲得多個(gè)根節(jié)點(diǎn),也就是獲取多個(gè)樹(即:start with 后面的條件表示遞歸從哪里開始。)
條件2—連接條件,目的就是給出父子之間的關(guān)系是什么,根據(jù)這個(gè)關(guān)系進(jìn)行遞歸查詢(即:遞歸時(shí)前后兩條數(shù)據(jù)是以條件2來建立聯(lián)系的)
條件3—過濾條件,對(duì)所有返回的記錄進(jìn)行過濾。
排序字段—對(duì)所有返回記錄進(jìn)行排序
prior使用
prior的位置決定了遞歸時(shí)的具體關(guān)系或者說是決定了查詢時(shí)的檢索順序,prior 字段1=字段2 可以理解為當(dāng)前節(jié)點(diǎn)的字段1等于下一個(gè)節(jié)點(diǎn)的字段2。
兩種寫法:
connect by prior dept_id=par_dept_id 表示采用自上而下的搜索方式(先找父節(jié)點(diǎn)然后找子節(jié)點(diǎn))
connect by dept_id=prior par_dept_id 表示采用自下而上的搜索方式(先找葉子節(jié)點(diǎn)然后找父節(jié)點(diǎn))
舉例
語法:
select
from 表名 t
where 過濾條件
start with t.PID=xx --開始根節(jié)點(diǎn)
connect by prior t.ID=t.PID
SELECT t.JGBHFROM GG_JGBH twhere SYBZ = 1START WITH t.SJJG = (select SJJG from GG_JGBH where JGBH = '0001')
CONNECT BY PRIOR t.JGBH = t.SJJG
但上速查詢的內(nèi)容不包括“開始根節(jié)點(diǎn)”所對(duì)應(yīng)的數(shù)據(jù),此時(shí)我的解決方式是使用OR來關(guān)聯(lián)
select E_ADDRESS.*, (select jgmc from gg_jgbh where jgbh = account) jgmcfrom E_ADDRESSwhere ACCOUNT = (select SJJG from GG_JGBH where JGBH = '0001')or ACCOUNT in(SELECT t.JGBHFROM GG_JGBH twhere SYBZ = 1START WITH t.SJJG = (select SJJG from GG_JGBH where JGBH = '0001')CONNECT BY PRIOR t.JGBH = t.SJJG)
引用文章
http://www.dbs724.com/10240.html
https://blog.csdn.net/lwh_zfj/article/details/90180260