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
- test2
- test4
- test5
- test4
- test3
评论
xieye
2007-05-09
seadog
2007-04-05
谢谢楼上的
divsun
2007-04-04
看了半天我也没看明白楼主要问什么?
用ruby里
一般来说id,parent_id,name就可以实现一个树了,如果为了增加效率可以增加计数器缓存字段,isNode字段是没有必要的,children.size能取到.
我想楼主加这么多字段是为了增加效率和读取的简便性,这本无可厚非,但在维护这个树的时候也很难去维护这些字段的数据关联完整性.
一般遍历一个树可以用递归和非递归的方法,这个算法是比较基本的,可以自己去参考一下有关资料.
用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
- 浏览: 4774 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
三年程序员==架构师?
高薪的也许不是技术牛人 但是可以肯定的是在某些方面有一定的可取之处 高龄的也许 ...
-- by kimmking -
三年程序员==架构师?
zhangsheng79 写道downpour 写道现在的牛人基本上都分布在75 ...
-- by elimago -
国内的程序员能做一辈子吗 ...
在google估计可以, 只要你够水准, 像Rob Pike五十多岁不是也被go ...
-- by lhyasia -
三年程序员==架构师?
wwtyler 写道caiknife 写道nicky_hk 写道fcl8187 ...
-- by caiknife -
三年程序员==架构师?
caiknife 写道nicky_hk 写道fcl8187 写道我是80后的,工 ...
-- by wwtyler






评论排行榜