`
seadog
  • 浏览: 17568 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

一个简单的树的问题

阅读更多

表设计如下:

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
分享到:
评论
6 楼 xieye 2007-05-09  
http://www.iteye.com/topic/77760
5 楼 seadog 2007-04-05  
谢谢楼上的
4 楼 divsun 2007-04-04  
看了半天我也没看明白楼主要问什么?
用ruby里
一般来说id,parent_id,name就可以实现一个树了,如果为了增加效率可以增加计数器缓存字段,isNode字段是没有必要的,children.size能取到.
我想楼主加这么多字段是为了增加效率和读取的简便性,这本无可厚非,但在维护这个树的时候也很难去维护这些字段的数据关联完整性.

一般遍历一个树可以用递归和非递归的方法,这个算法是比较基本的,可以自己去参考一下有关资料.





3 楼 seadog 2007-04-04  
你的回答是可以实现我要的东西

但是你回答的东西不对 请看清楚题名
2 楼 dennis_zane 2007-04-04  
如果使用ActiveRecord,可以使用act_as_tree插件
1 楼 dennis_zane 2007-04-04  
递归查询,根据你的数据库类型,请自行google递归查询的SQL

相关推荐

Global site tag (gtag.js) - Google Analytics