2016-09-27 62 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 
相關問題