作者grence (多想两分钟 = =")
看板Database
标题Re: [SQL ] 请问如何找出母节点
时间Fri May 25 22:08:42 2007
※ 引述《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: 61.229.207.152
※ 编辑: grence 来自: 61.229.207.152 (05/25 22:10)