论坛首页 入门技术论坛

一个简单的树的问题

浏览 4111 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-04-04  

表设计如下:

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
   发表时间:2007-04-04  
递归查询,根据你的数据库类型,请自行google递归查询的SQL
0 请登录后投票
   发表时间:2007-04-04  
如果使用ActiveRecord,可以使用act_as_tree插件
0 请登录后投票
   发表时间:2007-04-04  
你的回答是可以实现我要的东西

但是你回答的东西不对 请看清楚题名
0 请登录后投票
   发表时间:2007-04-04  
看了半天我也没看明白楼主要问什么?
用ruby里
一般来说id,parent_id,name就可以实现一个树了,如果为了增加效率可以增加计数器缓存字段,isNode字段是没有必要的,children.size能取到.
我想楼主加这么多字段是为了增加效率和读取的简便性,这本无可厚非,但在维护这个树的时候也很难去维护这些字段的数据关联完整性.

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





0 请登录后投票
   发表时间:2007-04-05  
谢谢楼上的
0 请登录后投票
   发表时间:2007-05-09  
http://www.iteye.com/topic/77760
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics