2016-09-27 61 views
0

我的表格包含'datetimes'一栏,带有一个id。查询MySQL计数数据并将其转换为JSON

+----+---------------------+ 
| id |  datetime  | 
+----+---------------------+ 
| 0 | 2016-09-02 12:13:13 | 
| 1 | 2016-09-02 10:16:11 | 
| 2 | 2016-09-05 11:03:23 | 
| 3 | 2016-09-08 11:34:45 | 
| 4 | 2016-09-08 09:23:06 | 
| 5 | 2016-09-08 10:22:05 | 
| .. |   ...   | 
+----+---------------------+ 

表中每个日期都会有多个实例。我的目标是收集每个日期发生的次数。因此,对于上面的表格:

2016-09-02 => 2 
2016-09-05 => 1 
2016-09-08 => 3 

那么我需要使用PHP像这样以移动数据为JSON格式:

[{"date":"2016-09-02","count":"2"}, 
{"date":"2016-09-05","count":"1"}, 
{"date":"2016-09-08","count":"3"}] 

JSON格式将由d3.js使用脚本我已写入每个日期与每个日期发生的频率的关系。

我从来没有处理过这种查询之前,所以我真的不知道从哪里开始,或者如何使用PHP移动到JSON格式。感谢任何能够提供帮助的人。

+2

使用COUNT(*)和GROUP BY。这是非常基本的SQL,它应该在很多教程中。 – Barmar

+0

SO不是代码写作服务或辅导服务。你需要学习基础知识并自己编写代码。如果您无法正常工作,请在此发布您的尝试,我们会为您提供帮助。 – Barmar

+0

另外为了将你的输出转移到JSON是非常简单的...检查手册:http://php.net/manual/en/function.json-encode.php – Josip

回答

0

使用以下查询:

SELECT DATE_FORMAT(datetime, '%Y-%m-%d') AS `date`, 
     COUNT(*) AS `count` 
FROM yourTable 
GROUP BY DATE_FORMAT(datetime, '%Y-%m-%d') 

然后在你的PHP代码创建JSON:

$a = array(); 
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    $a[] = array('date' => "$row['date']", 'count' => "$row['count']"); 
} 

$json = json_encode($a); 
+0

看起来像SQL查询将返回指定的结果。我不知道为什么这个答案收到downvote。 +10。 – spencer7593

+1

谢谢,这工作得很好。我设法弄清楚SQL,但不知道如何使用PHP创建JSON。这有助于奇迹。 –

0

我认为SQL下面对你有用。请运行并参见

SELECT DATE_FORMAT(datetime, '%Y-%m-%d'),count(*) 
FROM yourTable 
GROUP BY 1 
order by 1 
相关问题