2013-03-20 74 views
2

嗯,我不知道它應該是什麼標題,也不能解釋它,但我會盡我所能來解釋我的問題。Mysql計數行數取決於日期

我有這個表由側重於date_participatedfblike_point某些數據。

enter image description here

好了,我的期望輸出應該是

二零一三年三月二十零日1

2013年3月19日3

所以基本上,每個日期都會計算fblike_point的數量

在2013年3月19日有總的3 fblike_point並在2013年3月20日有一個共1個fblike_point

我的問題是,我不輸出我想要的結果,我得到的2013年3月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>"; 
} 

這個東西的任何解決方案?任何幫助,將不勝感激。 :)

+0

哪裏是GROUP BY? – 2013-03-20 06:52:38

+0

使用'mysql_num_rows()'函數來計算行數 – 2013-03-20 06:53:30

回答

5

你應該改變你的查詢中使用的GROUP BY代替DISTINCT

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

你使用DISTINCT的方式是讓所有獨特的日期,併爲每個結果,加上返回的記錄量在整個結果集。

使用GROUP BY可讓您使用該組上可用的任何聚合函數


編輯

正如@ysth被提及,而不是使用COUNT你可能想使用SUM取決於fblike_point可以有可能值。

使用SUM實際上是更明智的做法。

+1

或可能SUM(fblike_point),取決於其他值可能有多少,以及應該導致這些情況 – ysth 2013-03-20 06:55:16

+0

@ysth - 你是對的,謝謝。我已編輯答案以添加*警告*。 – 2013-03-20 07:01:32

+2

錯誤,如果fblike_point爲空或1,兩者將返回相同;如果它是0,那行不會被總數計算,但會被計數 – ysth 2013-03-20 07:05:15

1

下面的查詢使用去除DISTINCT和更換ORDER BYGROUP 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"; 
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"; 
+0

你需要在這裏使用分組 – alwaysLearn 2013-03-20 06:55:38