作者deuter (Harold)
看板Database
标题Re: [SQL ] 请问如何找出母节点
时间Tue May 29 06:46:56 2007
既然是用 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