全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1851
推到 Plurk!
推到 Facebook!

問一個sql語法 (抓樹狀資料.....)

尚未結案
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-28 16:18:39 IP:202.145.xxx.xxx 未訂閱
日前我有一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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-28 16:44:48 IP:61.221.xxx.xxx 未訂閱
select distinct t1.mk,t2.upk from table t1,table t2 where t1.mk=t2.mk and not t1.upk=t2.upk order by t1.mk,t2.upk
------
======================
昏睡~
不昏睡~
不由昏睡~
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-17 09:59:01 IP:61.219.xxx.xxx 未訂閱
如果你是用 Oracle 可能用 hierarchical_query (select ??? from [TableName] where xxx start with xxx connect by xxx) 可以達成一次 SQL Query 得到你要的結果。 不然可能須土法煉鋼用 recursive procedure 一層一層收集.
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-12 11:34:57 IP:210.192.xxx.xxx 未訂閱
引言: 如果你是用 Oracle 可能用 hierarchical_query (select ??? from [TableName] where xxx start with xxx connect by xxx) 可以達成一次 SQL Query 得到你要的結果。 不然可能須土法煉鋼用 recursive procedure 一層一層收集.
後來我用一個公用變數 遞回的方式 不斷的向整個樹狀組織下面探 一層一層找下去 直到SELECT不出東西 再把變數丟出來 就是我要的 [何謂遞迴] 簡單的說:函數之中有呼叫自身函數的方式稱之. 定義遞迴:一個遞迴函數必定具備以下兩種特性: 1.具有終止遞迴呼叫的條件. 2.一個可以將問題逐次簡化的處理,最後問題將簡化至符合終止遞迴的條件. BCDEFHIJKLMNOPQRSTUVWXZ
------
BCDEFHIJKLMNOPQRSTUVWXZ
系統時間:2024-09-28 6:18:34
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!