Php 计算MySQL中不同行的数量
我正在用PHP/MySQL构建一个评论系统。这个评论系统有一个很好的功能,它允许用户突出显示文本(在数据库中存储为“selected_text”),然后突出显示的文本将与用户的评论一起存储在数据库中。此外,我还将段落(其中突出显示的文本)存储为INT。这些值都正确地存储在数据库中,但现在我想对它们进行处理 我想创建“评论计数器”。这些评论计数器将放在文章中每个段落的旁边,它们将显示对所附段落的评论总数。“注释”的视觉概述:表格结构: 我最近尝试检索此信息的查询是:Php 计算MySQL中不同行的数量,php,mysql,comments,Php,Mysql,Comments,我正在用PHP/MySQL构建一个评论系统。这个评论系统有一个很好的功能,它允许用户突出显示文本(在数据库中存储为“selected_text”),然后突出显示的文本将与用户的评论一起存储在数据库中。此外,我还将段落(其中突出显示的文本)存储为INT。这些值都正确地存储在数据库中,但现在我想对它们进行处理 我想创建“评论计数器”。这些评论计数器将放在文章中每个段落的旁边,它们将显示对所附段落的评论总数。“注释”的视觉概述:表格结构: 我最近尝试检索此信息的查询是: $distinct=mysq
$distinct=mysql_查询(“从注释中选择计数(不同段落id))代码>
以及相应的PHP代码:
while ($result_three = mysql_fetch_array($distinct))
{
echo $result_three['paragraph_id'];
}
现在,我想我可能走错了方向。我曾考虑尝试运行一个查询,首先查找所有的不同段落ID
。接下来,我将对每个循环运行一个for循环,计算那些段落ID
出现的次数
我现在处理的查询似乎没有达到我的目标。此外,我还担心没有一种明确的方法可以让我清楚地将统计的数据附加到“评论计数器”上。如果我正确理解了您的问题,您需要按段落\u id
分组。试试这个:
SELECT paragraph_id, COUNT(*)
FROM comments
GROUP BY paragraph_id
使用下面的代码,这应该是可行的
$res = mysql_query("SELECT COUNT(DISTINCT paragraph_id) as cnt FROM comments");
while ($result_three = mysql_fetch_assoc($res)) { echo $result_three['cnt']; }
你可能还想知道什么时候没有评论,你需要对段落进行外部连接
SELECT p.paragraph_id,
COUNT(c.comment_id) as comment_count
FROM comments c
RIGHT JOIN paragraphs p
ON c.paragraph_id = p.paragraph_id
GROUP BY p.paragraph_id
这是一个有效的基本上,您需要统计每组段落ID中的注释。正确的查询如下:
$distinct = mysql_query("SELECT paragraph_id, (DISTINCT comment_id) as comment_count FROM comments GROUP BY paragraph_id");
while ($result_three = mysql_fetch_array($distinct))
{
echo $result_three['paragraph_id']; // Gives the id of the paragraph
echo $result_three['comment_count']; // Gives the comment count for the associated paragraph
}
这很接近。它统计唯一段落ID的数量。它打印出来的值是3。不完全是我要找的。我正在尝试检索这样的内容:对于每个唯一的段落id,计算对该段落id的评论总数。否,它将返回提及每个段落id
的评论数(在评论
表上的行)。在phpMyAdmin上运行这个来了解我的意思。天哪,对不起,你是对的。我道歉。使用PHP时,我得到了不同的结果。我认为问题在于我没有从fetch_数组中引用正确的键。最终对我有用的是结合了一些答案,并最终调用了一个别名。谢谢你的帮助!这是赢家。我最终修改了这段代码,排除了连接组件,并在注释计数之前包含了一个“AS”。然后我必须在PHP中回显的是echo$result=['comment\u count']代码>谢谢!谢谢,这是构建我的查询的一个很好的基准,这也是正确的。我试图用附加的PHP代码来回答我自己的问题,但这不会让像我这样的新手在发布问题后的8小时内堆栈溢出谢谢。