2013-12-23 28 views
0

我試圖從我的數據庫中提取結果以用於Google圖表。 MySQL查詢:計算在給定的日期/時間匹配查詢的總結果

 $query = " 
SELECT DATE_FORMAT(created_at, '%l:%i %p %m-%d-%Y') date 
    , COUNT(tweet_id) cnt 
    FROM tweets 
WHERE tweet_text LIKE '%$q%' 
GROUP 
    BY DATE_FORMAT(created_at, '%l:%i %p %m-%d-%Y'); 
"; 
    $tweets = mysqli_query($db, $query); 
    confirm_query($tweets); 
    return $tweets; 

不幸的是,我在同一分鐘得到多個條目。我怎樣才能得到在同一時間間隔內爲所有條目返回的累計數字?

這裏是print_r的回報的摘錄:

['7:11 PM 12-15-2013', 1],['7:11 PM 12-15-2013', 1],['7:11 PM 12-15-2013', 1], 
... 
['7:19 PM 12-15-2013', 1],['7:19 PM 12-15-2013', 2],['7:19 PM 12-15-2013', 1],['7:19 PM 12-15-2013', 1],['7:19 PM 12-15-2013', 1] 
... 

這是接近,但不完全正確。我期待以下:

['7:11 PM 12-15-2013', 3], ..., ['7:19 PM 12-15-2013', 6], ... 

而且,在第二盤,你可能已經注意到,['7:19 PM 12-15-2013', 2]包含2一個值,而不是像1休息。我不知道爲什麼。顯然,COUNT工作正常,但我錯過了一些東西。

要描述查詢的英文,這就是我想要完成的。我想統計與用戶查詢匹配的所有行,並且我想返回與其各自的日期/時間相匹配的總行數。

因此,在2013年12月15日下午7:19有6行包含用戶正在搜索的信息。下一個數據點,下午7點20分可能有0個或更多的結果,等等。顯然,如果7:20有0個數據點,它將被排除在結果之外,因爲沒有匹配的行。

我打算使用類似於Return counts of 0 from mysql "count()"的東西來填寫缺失的數據點。但是,首先我需要弄清楚這一部分。

我試過谷歌,W3學校,當然還有MySQL官方文檔,但我似乎在試圖讓這些數據適當地繪製圖表。

我很想聽聽社區提供的任何建議。

+0

'$ query。=「GROUP BY DATE_FORMAT(created_at,'%Y-%d-%m%H:%i')」;'刪除%s! – Babblo

回答

1

您應該使用在select相同的格式在group by

SELECT DATE_FORMAT(created_at, '%l:%i %p %m-%d-%Y') AS date,"; 
    $query .= " COUNT(tweet_id) AS count FROM `tweets`"; 
    $query .= " WHERE tweet_text LIKE '%{$q}%'" ; 
    $query .= " GROUP BY DATE_FORMAT(created_at, '%l:%i %p %m-%d-%Y') 

group by由第二聚集。但是,您沒有select中的秒數,因此它正在生成輸出字符串,但計數僅爲一秒。

+0

正是!謝謝,戈登。 – DroBuddy

0

IRC#mysql給我一條生命線,幫助我弄明白了。這是人爲錯誤。在GROUP BY DATE_FORMAT(created_at, '%Y-%d-%m %H:%i:%s'"我分組到秒。我忘記刪除%s。刪除後,它現在正確地返回預期的結果。

相關問題