網上摘錄。
一、樹型表結構:
節點ID? 上級ID? 節點名稱
二、公式:
select 節點ID,節點名稱,level
?????? from 表
?????? connect by prior 節點ID=上級節點ID
?????? start with 上級節點ID=節點值
????? 說明:
????? 1、常見的樹形結構為公司組織機構、地區……
2、求節點ID以上的結構,或以上的結構,將“節點ID=上級節點ID”左右順序換一下即可。
3、Level為Oracle的特殊字段,表示“層”的意思。當前節點ID的下一層節點為“1”。
???? 測試SQL:
??????????? 說明1、求002以下(或以上)所有子節點和層次(動態:總是從1開始算),但不包括自身
??????????? 說明2、如果求002以上的節點,則“connect by prior topno=departno”,“=”兩邊的條件換位即可。
??????????? select departno,departname,level
??????????? from dept
??????????? connect by prior departno=topno
??????????? start with topno='002';
????? 測試數據
???? ? create table Dept(
?? DepartNO? varchar2(10),
????????? DepartName? varchar2(20),
????????? TopNo??? varchar2(10));
????????? insert into Dept values('001',' 董事會','0');
? insert into Dept values('002','總裁辦 ','001');
insert into Dept values('003','財務部 ','001');
insert into Dept values('004','市場部 ','002');
insert into Dept values('005','公關部 ','002');
insert into Dept values('006','銷售部 ','002');
insert into Dept values('007','分銷處 ','006');
insert into Dept values('008','業務拓展處','004');
insert into Dept values('009','銷售科','007');
向前查 比如
select distinct departno,departname,level
from dept
connect by prior topno=departno
start with
departno='005';
那么其實是查005自身以及上級, 所以結果是005,002,001
============================================================================================
?????? 寫遞歸最關鍵的要定義出來 遞歸函數 ,遞歸函數 最關鍵的要定義出來它的 參數 .和它的 返回值 咱么做展現,不用返回值,直接做展現就行了,參數最重要,那就分析一下參數怎么去定義?這時候要分析遞歸的過程,遞歸過程什么樣呢?根據它的 id 找它的 父id,根據它的 父id 找到它的孩子,根據它 的孩子再找到它的孩子.那么分析這個參數肯定是一個id,因為只有傳進來id,才知道怎么去找這個id
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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