2007-04-04

一个简单的树的问题

关键字: tree

表设计如下:

tree:表名

id:编号

name:节点描述

pid:父编号

nodelevel:节点级别

level:节点层数

isNode:是否有节点

id name pid nodelevel level isNode
1 test1 0 AAA 1 1
2 test2 1 AAAAAA 2 1
3 test3 1 AAAAAB 2 0
4 test4 2 AAAAAAAAA 3 1
5 test5 4 AAAAAAAAAAAA 4 0

 

我通过select * from tree order by nodelevel 得到一棵树

我如何遍历 这个查询结果

得到如下信息


 这样的一个结果信息

 

test1

  1. test2
    1. test4
      1. test5
  2. test3
评论
seadog 2007-04-05
谢谢楼上的
divsun 2007-04-04
看了半天我也没看明白楼主要问什么?
用ruby里
一般来说id,parent_id,name就可以实现一个树了,如果为了增加效率可以增加计数器缓存字段,isNode字段是没有必要的,children.size能取到.
我想楼主加这么多字段是为了增加效率和读取的简便性,这本无可厚非,但在维护这个树的时候也很难去维护这些字段的数据关联完整性.

一般遍历一个树可以用递归和非递归的方法,这个算法是比较基本的,可以自己去参考一下有关资料.
seadog 2007-04-04
你的回答是可以实现我要的东西

但是你回答的东西不对 请看清楚题名
dennis_zane 2007-04-04
如果使用ActiveRecord,可以使用act_as_tree插件
dennis_zane 2007-04-04
递归查询,根据你的数据库类型,请自行google递归查询的SQL
seadog
搜索本博客
博客分类
最近加入圈子
存档
最新评论