我有多级评论系统,我将评论存储在mysql数据库表中,包含以下字段:
id
article_id
user_id
date
content
comment_id
其中comment_id是父评论的id。
如何在所有文章的特定日期之后计算用户评论的回复数量? e.g:
- comment1
-- comment1.1
--- comment1.1.1
-- comment1.2
-- comment1.3
--- comment1.3.1
如果用户发布了comment1,我需要查询返回5.如果用户发布了评论1.3 - 返回1.
答案 0 :(得分:3)
有关一些想法,请参阅Managing Hierarchical Data in MySQL。一种简单的方法是将路径存储在注释树中,就像上面列出的那样,并执行LIKE
查询。 E.g:
SELECT COUNT(*) WHERE comment_path LIKE 'comment1.%'
您当然需要comment_path
列上的索引,只要%
仅在最后使用,就会使用该索引。
答案 1 :(得分:0)
如果可能,您可以将数据架构更改为嵌套集。使用此模式,您可以使用简单的加法/减法计算每个层次结构中的答案。不幸的是,我只懂德语的好教程: - /例如this。