我正在制作一个嵌套评论系统,我有下表:
create table comments (
id int unsigned primary key auto_increment,
author_id int unsigned not null,
target_id int unsigned not null,
target_type set('post','comment') not null,
content varchar(2000) not null
);
每条评论都可能针对一个帖子或另一个评论,在这种情况下,它将被视为回复。有没有一种简单的方法来计算给定帖子(例如 id 1 的帖子)的嵌套评论数(评论+回复+对回复的回复等)?
我知道,如果我有一个名为 target_post_id 的字段和另一个名为 target_comment_id 的字段,而不是有 target_id 和 target_type,那么计算任何给定帖子的所有评论将非常容易,但我有理由尝试保留此表结构,说实话,我以前从未处理过递归查询。感谢任何帮助,谢谢!!
最佳答案
简短的回答是“不”。稍微长一点的答案是,您可以在整个帖子上保留评论计数,并在嵌套结构中添加/删除评论时更新它(这是非规范化的,但在这种情况下并非完全出乎意料);或者正如您所指出的,您可以随时从每条评论中指向该帖子。
关于mysql - 递归计算帖子的评论数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651111/