我正在建立一个嵌套的评论系统,我有下表:
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,那么计算任何给定帖子的所有评论都会非常容易,但我有理由试图保留此表结构,事实上,我以前从未处理过递归查询。感谢任何帮助,谢谢!!
答案 0 :(得分:2)
简短的回答是“不”。稍微长一点的答案是,您可以在整个帖子上保留评论计数,并在嵌套结构中添加/删除评论时更新它(这是非规范化的,但在这种情况下并非完全出乎意料);或者当你指出时,你总是可以从每条评论中回到帖子。