2010-02-05 84 views
0

我正尝试使用PHP和MySQL创建一个嵌套注释系统。但我卡住了根据它的上下文对MySQL结果进行排序

  • 我的数据库结构是id,body,time,reply和depth。
  • 定期评论的reply字段将为'0'。如果它回复到另一个,它将对应于它所回复的评论的id
  • depth意味着它有多深,从最高父

因此,如果这是我的表的内容...

+------+-------------+--------+---------+---------+ 
| id | body  | time | reply | depth | 
+------+-------------+--------+---------+---------+ 
| 1 | Some msg1 | 1 | 0 | 0 | 
| 2 | Some msg2 | 2 | 0 | 0 | 
| 3 | aReply1 | 3 | 1 | 1 | 
| 4 | aReply2 | 4 | 1 | 1 | 
| 5 | aReply21 | 5 | 3 | 2 | 
+------+-------------+--------+---------+---------+ 

它会出现这样的事情...

- (1) Some msg1 
-- (3) aReply1 
--- (5) aReply21 
-- (4) aReply2 
- (2) Some msg2 

我希望这是可能的使用这种方法,它超越了我的逻辑。

+0

我愿意。他想按线程和日期排序。 – 2010-02-05 22:20:18

+1

作者想要一个SQL SELECT查询,根据行的深度和父级(回复)信息将会正确排序。 你有没有考虑过使用树遍历算法?它非常适合嵌套对象。 Google针对“修改的预置树遍历”。 – 2010-02-05 22:20:46

回答

1

如果你不能改变表结构,你可以得到所有的行(按时间顺序选择*),然后使用PHP生成树。

对于树存储,我推荐使用嵌套集算法。

相关问题