[经典问题]关于SQLServer实现无限层次的树形结构的检索问题

_TMG_ 2005-09-12 10:11:57
例如:Tree{NodeID, NodeName, ParentNodeID, HasChild, Level ...} 可能还会有其他冗余信息

问题, 如何最有效率的检索一个Node下面的所有的子节点(包含任意层), 也可以考虑使用冗余表来实现, 总之求一个最有效率的解决方案
...全文
378 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
funsuzhou 2005-09-13
  • 打赏
  • 举报
回复
注意:
ShowSub(......)函数类似于:
{
......
ShowSub(......);
......
}
funsuzhou 2005-09-13
  • 打赏
  • 举报
回复
结合程序用递归逻辑来解决的好处是:
你只需要编写一个列出直接的子节点的语句段,假设为ShowSub(......)
对于这些子节点,只要递归调用ShowSub(......)就可以了。
funsuzhou 2005-09-13
  • 打赏
  • 举报
回复
我觉得这类问题最好结合程序用递归逻辑来解决!
rivery 2005-09-13
  • 打赏
  • 举报
回复
这里有很多的。楼主搜索一下。
--创建处理函数,查询指定id的所有子结点,同时包含传入的id节点。楼主可适当修改,以供自己需要。
create function f_id(@id int)
returns @re table(NodeID int,level int)
as
begin
declare @l int
set @l=0
insert @re select @id,@l
while @@rowcount>0
begin
set @l=@l+1
insert @re select a.NodeID,@l from Tree a join @re b on a.ParentNodeID=b.NodeID where b.level=@l-1
end
return
end
天地客人 2005-09-13
  • 打赏
  • 举报
回复
使用游标查询数据插入到临时表中!

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧