统计用户评论的回复数

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

以上是关于统计用户评论的回复数的主要内容,如果未能解决你的问题,请参考以下文章

myql 查询树形表结果:说说说说的述评评论的回复

模仿qq空间或朋友圈发布动态评论动态回复评论删除动态或评论的功能(上)

数据库设计——评论回复功能

用一层嵌套计算评论

SQL查询,如何去除重复的记录?

Python爬虫:微博评论数据分析