2012-01-29 36 views
1

我有一个自引用表'comments'where comments.replyToId REFERENCES comments.ID。如何通过查询mysql中的自引用表来获得递归结果?

我的问题是,我该如何查询与自引用表的数据库来获取正确排序,以便我能代表结果作为PHP树结果?

我已经试过

select * from comments as comments_1 
left join comments as comments_2 
on comments_1.id = comments_2.replyToId 

我试图用这样的结果在PHP

+1

问题是什么? – zerkms 2012-01-29 21:22:51

+0

@zerkms我的问题是,我如何查询一个数据库与自引用表来获得正确的结果,以便我可以表示结果作为一个树在PHP?我希望我的问题现在更清楚了......谢谢 – fenerlitk 2012-01-29 21:34:15

+0

好,那么你从中得到什么问题? – Nicolas78 2012-01-29 21:36:58

回答

3

你不会获得直接递归结果出来的MySQL。最近有一个类似的讨论 - 对于一些使用存储过程的RDBMS可能是可能的,但对于开箱即用的SQL并不适用(请参阅How can I get ancestor ids for arbitrary recursion depth in one SQL query?)。

我做什么,而不是在类似案件中:获取所有评论没有父母。然后,对于每条评论,获取它的子项(如果存储了每个评论的“深度”,则可以使用一个SQL查询获取所有这些子项和下一个层的所有子项)。将孩子们存放在树状结构的适当位置,重复。

如果你需要一个更低级的,你prly需要共享一些代码,解释你的数据结构,你到目前为止等尝试,这只是一般的方法。