2

好吧,我不知道它应该是什么标题,也不知道如何解释,但我会尽力解释我的问题。

我有这张表由某些数据组成,这些数据侧重于date_participatedfblike_point

在此处输入图像描述

好吧,我想要的输出应该是

2013-03-20 1

2013-03-19 3

所以基本上,每个日期都会计算 fblike_point 的数量

在 2013 年 3 月 19 日,它总共有 3 个 fblike_point,在 2013 年 3 月 20 日,它总共有 1 个 fblike_point

我的问题是,我输出的不是我想要的结果,我得到的结果是2013-03-19 4

它停留在 1 个日期并计算 fblike_point 的数量

这是我的代码。

$query = "SELECT DISTINCT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' ORDER BY date_participated DESC";
$result = db_query($query);

foreach ($result as $values) {
    echo $values->date_participated . " " . $values->fblike . "<br>";
}

这东西有什么解决办法吗?任何帮助,将不胜感激。:)

4

3 回答 3

5

您应该更改查询以使用 aGROUP BY而不是DISTINCT

SELECT date_participated, COUNT(fblike_point) as fblike 
FROM event_raffles
GROUP BY date_participated

您使用的方法DISTINCT是获取所有唯一日期,并为每个结果添加整个结果集中返回的记录数量。

使用 a允许您使用该组上GROUP BY可用的任何聚合函数。


编辑

正如@ysth 所提到的,COUNT您可能希望SUM根据可能fblike_point具有的值来使用而不是使用。

使用SUM实际上是更明智的做法。

于 2013-03-20T06:52:11.313 回答
1

通过删除DISTINCT和替换ORDER BY来使用以下查询GROUP BY

$query = "SELECT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' 
AND status='1' GROUP BY date_participated DESC";
于 2013-03-20T06:53:30.203 回答
1

代替

$query = "SELECT DISTINCT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' ORDER BY date_participated DESC";

$query = "SELECT  date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' GROUP BY date_participated ORDER BY date_participated DESC";
于 2013-03-20T06:54:57.013 回答