Re: [SQL ] 請問如何找出母節點

看板Database (資料庫)作者 (Harold)時間17年前 (2007/05/29 06:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
既然是用 MS SQL 2005, 可以試試看新的 recursive query 的語法 http://technet.microsoft.com/en-us/library/ms186243.aspx ※ 引述《grence (多想兩分鐘 = =")》之銘言: : ※ 引述《rosemary (迷迭香)》之銘言: : : 我有一個資料表叫做products如下 : : 是為了展現樹狀結構,樹的層級是動態的,不一定有幾層。 : : 請問要怎麼下SQL語法,給定nodID,找出所有的母節點monID : : 例如;給nodID=12 (2B鉛筆), : : 要怎麼找出 (1)文具-(4)鉛筆-(12)2B鉛筆呢? : : (從後面 12-4-1找也可以 ^^) : : 要用遞迴嗎?那這個例子SQL的遞迴語法怎麼寫呢? : : 我是用MS SQL 2005的....謝謝大家 ^^ : M$ SQL 應該可以這樣硬來 : ----- : declare @monid int,@result varchar(100),@inputid int : select @monid=monid, @inputid=12 from products where nodid=12 : while(@monid!=-1) : begin : select @result=@result+@inputid+'-' : select @monid=monid from products where nodid=monid : end : select @result -- 應該是'12-4-1-' XD : ----- : 其實就只是硬兜答案而已:拿 nodID 查 monID,monID!=-1 記下來並繼續查 : 我想問題在於不會寫 M$ SQL的迴圈吧,應該 : 不過, SQL好像是集合概念的語言,用一般程式邏輯思考執行的效率會比較糟糕 : 但…先求有解再求最佳解吧XD : : products : : ======================== : : nodID monID nodName : : 0 -1 產品 : : 1 0 文具 : : 2 0 食物 : : 3 0 飾品 : : 4 1 鉛筆 : : 5 1 筆記本 : : 6 2 餅乾 : : 7 2 水果 : : 8 3 髮圈 : : 9 3 耳環 : : 10 3 太陽眼鏡 : : 11 4 自動鉛筆 : : 12 4 2B鉛筆 : : 產品-文具-鉛筆 -自動鉛筆... : : -2B鉛筆 : : -筆記本 : : 食物-餅乾 : : -水果 : : 飾品-髮圈 : : -耳環 : : -太陽眼鏡 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 67.161.17.127
文章代碼(AID): #16MrlXmS (Database)
文章代碼(AID): #16MrlXmS (Database)