统计用户评论的回复数
Posted
技术标签:
【中文标题】统计用户评论的回复数【英文标题】:count number of replies to user comment 【发布时间】:2011-03-22 17:37:26 【问题描述】:我有多级评论系统,我将 cmets 存储在具有此类字段的 mysql 数据库表中:
id
article_id
user_id
date
content
comment_id
comment_id 是父评论的 ID。
如何计算所有文章在某个特定日期后对用户 cmets 的回复数? 例如:
- comment1
-- comment1.1
--- comment1.1.1
-- comment1.2
-- comment1.3
--- comment1.3.1
如果用户发表评论 1,我需要查询返回 5。如果用户发表评论 1.3 - 返回 1。
【问题讨论】:
comment1 的查询不会返回 3 吗? 1.1、1.2 和 1.3 是 comment1 的直接子代。 这个问题可能对阅读有用,即使它是针对 Postgresql 的:Is it possible to make a recursive SQL query? @Zack ,我的错,comment1 的回报应该是 5。 【参考方案1】:请参阅Managing Hierarchical Data in MySQL 了解一些想法。一种简单的方法是像上面列出的那样将路径存储在评论树中并执行LIKE
查询。例如:
SELECT COUNT(*) WHERE comment_path LIKE 'comment1.%'
您当然需要在 comment_path
列上创建索引,只要 %
仅在末尾使用,就会使用该索引。
【讨论】:
"LIKE" 方法似乎实现起来很快,所以我会先做。感谢您的文章链接,我一定会研究它。【参考方案2】:如果可能,您可以将数据架构更改为嵌套集。使用此模式,您可以通过简单的加法/减法计算每个层次结构中的答案。不幸的是,我只知道好的德语教程:-/ 例如this。
【讨论】:
嵌套集模型包含在Managing Hierarchical Data in MySQL中。 @WhiteFang34:这篇文章现在不在了,但可以在作者的网站上找到:mikehillyer.com/articles/managing-hierarchical-data-in-mysql以上是关于统计用户评论的回复数的主要内容,如果未能解决你的问题,请参考以下文章