問一個sql語法 (抓樹狀資料.....) |
尚未結案
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
日前我有一table 結構如下
(代號) (上層代號)
mk upk
----------------------------
A
B A (B的上層為A)
C B (C的上層為B)
D B (D的上層為B)
E A (E的上層為A)
-------------------------- 它應該說一個樹狀組織 如下
A
B E
CD
---------------------------- 不曉得是否有方法 用sql語法一次能將某代號下層的代號都抓出來 EX: 我要找B以下的所有mk代號 則
select mk from TABLE where UPK='B' 得(C.D) 因為他的下層可能無限延伸 所以 我必須在找到 (C.D)後
再 select mk from TABLE where UPK='C' or UPK='D'
也許他可能找到(J.K.V....)然後要一直找下去 是否有方式 下sql能將CDJKV...一次找出來
BCDEFHIJKLMNOPQRSTUVWXZ
------
BCDEFHIJKLMNOPQRSTUVWXZ |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言: 如果你是用 Oracle 可能用 hierarchical_query (select ??? from [TableName] where xxx start with xxx connect by xxx) 可以達成一次 SQL Query 得到你要的結果。 不然可能須土法煉鋼用 recursive procedure 一層一層收集.後來我用一個公用變數 遞回的方式 不斷的向整個樹狀組織下面探 一層一層找下去 直到SELECT不出東西 再把變數丟出來 就是我要的 [何謂遞迴] 簡單的說:函數之中有呼叫自身函數的方式稱之. 定義遞迴:一個遞迴函數必定具備以下兩種特性: 1.具有終止遞迴呼叫的條件. 2.一個可以將問題逐次簡化的處理,最後問題將簡化至符合終止遞迴的條件. BCDEFHIJKLMNOPQRSTUVWXZ
------
BCDEFHIJKLMNOPQRSTUVWXZ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |