求一个算法 关于从数据库中创建树

推云童子 2013-10-22 06:43:09
递归的方式 效率不好, 不知道各位还有没有更好的办法
得支持无限子节点,装载到Treeview时 能保持原有的排序(例如移动节点到附近节点,顺序改变 可以存储在数据库中 并装出同样顺序的树).希望得到帮助
...全文
106 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2013-10-25
  • 打赏
  • 举报
回复
方法1、全部加载到程序内存,在内存里循环扫描、加载 方法2、如果表结构尚未确定,分区id,pid的模式,改用rootid,order,level的模式
推云童子 2013-10-25
  • 打赏
  • 举报
回复
@Oraclers 我是用Sqlite 不支持存储过程,对不起这点没讲明.
Oraclers 2013-10-23
  • 打赏
  • 举报
回复
CREATE PROCEDURE expand (@current char(20)) AS SET NOCOUNT ON DECLARE @lvl int, @line char(20) CREATE TABLE #stack (item char(20), lvl int) INSERT INTO #stack VALUES (@current, 1) SELECT @lvl = 1 WHILE @lvl > 0 BEGIN IF EXISTS (SELECT * FROM #stack WHERE lvl = @lvl) BEGIN SELECT @current = item FROM #stack WHERE lvl = @lvl SELECT @line = space(@lvl - 1) + @current PRINT @line DELETE FROM #stack WHERE lvl = @lvl AND item = @current INSERT #stack SELECT Child, @lvl + 1 FROM Hierarchy WHERE Parent = @current IF @@ROWCOUNT > 0 SELECT @lvl = @lvl + 1 END ELSE SELECT @lvl = @lvl - 1 END -- WHILE 这个实现上述效果的储存过程。
Oraclers 2013-10-23
  • 打赏
  • 举报
回复
CREATE TABLE Hierarchy (Parent VARCHAR(20) NOT NULL, Child VARCHAR(20), CONSTRAINT UIX_ParentChild UNIQUE NONCLUSTERED (Parent,Child)) CREATE CLUSTERED INDEX CIX_Parent ON Hierarchy(Parent) GO INSERT Hierarchy VALUES('World','Europe') INSERT Hierarchy VALUES('World','North America') INSERT Hierarchy VALUES('Europe','France') INSERT Hierarchy VALUES('France','Paris') INSERT Hierarchy VALUES('North America','United States') INSERT Hierarchy VALUES('North America','Canada') INSERT Hierarchy VALUES('United States','New York') INSERT Hierarchy VALUES('United States','Washington') INSERT Hierarchy VALUES('New York','New York City') INSERT Hierarchy VALUES('Washington','Redmond') GO 此种表示方法不会清楚显示数据中暗含的结构。 Parent Child ---------------------------------- ---------------------------------- World Europe World North America Europe France France Paris North America United States North America Canada United States New York United States Washington New York New York City Washington Redmond 而下例则更容易解释: World North America Canada United States Washington Redmond New York New York City Europe France Paris 这个是表结构及效果。

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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