我有一个自引用表'comments',其中comments.replyToId REFERENCES comments。ID。
我的问题是,如何查询具有自引用表的数据库以获得正确排序的结果,以便在PHP中将结果表示为树?
我试过
select * from comments as comments_1
left join comments as comments_2
on comments_1.id = comments_2.replyToId
我正试图在php 中使用这个结果
您不会直接从MySQL中得到递归结果。最近也有类似的讨论——一些RDBMS可能使用存储过程等,但开箱即用的SQL则不然(请参阅如何在一个SQL查询中获得任意递归深度的祖先ID?)。
在类似的情况下,我会做的是:在没有父母的情况下获取所有评论。然后,对于每个注释,获取其子级(如果存储每个注释的"深度",则可以通过一个SQL查询获取所有这些子级以及下一层的所有子级)。将孩子们存放在树状结构中的适当位置,重复上述步骤。
如果你需要一个更低级的,你可能需要共享一些代码,解释你的数据结构,到目前为止你已经尝试了什么等等,这只是一般的方法。