主题:存储过程, 找根节点
无敌小学生
[专家分:20] 发布于 2005-10-10 14:32:00
我在数据库里面存放树结构,结构字段如下
node_id int //节点id
parentNode_id int //父节点id
node_text varchar //节点内容
isModule bit //是否叶子节点
能否通过做一个存储过程,
用以输出所有根节点?
回复列表 (共3个回复)
沙发
美善 [专家分:2150] 发布于 2005-10-10 14:44:00
这个 , 有些思路。
请等一下, 我写写试试。
板凳
美善 [专家分:2150] 发布于 2005-10-10 14:51:00
create procedure sp_test
as
begin
select
a.node_id,
a.parentNode_id,
a.node_text,
b.node_id as ancestor_id ,
b.node_text as ancestor_text
into
#t
from
xkb_treeNode a,xkb_treeNode b
where
a.parentNode_id = b.node_id and a.isModule = 1
while(exists(select 1 from xkb_treeNode a,#t b where a.node_id=ancestor_id and a.parentNode_id != -1))
begin
update #t
set
ancestor_id = b.p_id,
ancestor_text = b.p_text
from
#t a,
(select
c.node_id,
d.node_id as p_id,
d.node_text as p_text
from
xkb_treeNode c,xkb_treeNode d
where
c.parentNode_id = d.node_id) b
where
a.ancestor_id = b.node_id
end
select * from #t order by node_id
end
3 楼
无敌小学生 [专家分:20] 发布于 2005-10-10 15:09:00
真是太感谢了 。
呵呵 忙死我了
我来回复