递归mysql查询以获取子/父结果

时间:2012-02-20 11:20:17

标签: php mysql

我有一个评论表[再次:)] ...

COMMENT_ID comment_parent_id

E.G。如果有comment1(comment_id = 1)和comment2(comment_id = 2)都有comment_parent_id = 0但是如果有人回复(添加评论)到comment_id = 1,则表示这将是comment3(comment_id = 3但comment_parent_id = 1)。

现在要获取并显示所有注释和子注释,我必须使用第二个查询来检查它是否有子注释,但我想用一个查询,而不是递归函数,它会杀死服务器如果有100-200条评论,他们有1-2条评论..

如何做到这一点.. 谢谢你的时间..

问候

2 个答案:

答案 0 :(得分:0)

您可能需要查看有关Adjacency List vs. Nested Set Model

的这篇文章

答案 1 :(得分:0)

表格结构

帖子

id
post_id
user_id

评论

id
post_id
comment_id
user_id
deleted

回复

id
post_id
reply_id
user_id
deleted

SELECT *
FROM posts p
LEFT JOIN comments c ON c.post_id = p.post_id AND NOT c.deleted
LEFT JOIN replies r ON r.post_id = p.post_id AND NOT r.deleted
WHERE p.user_id = $user_id