我当前的查询是:
SELECT DISTINCT DATE(vote_timestamp) AS Date, COUNT(*) AS TotalVotes FROM `votes`
WHERE vote_target_id='83031'
GROUP BY DATE(vote_timestamp) ORDER BY DATE(vote_timestamp) DESC LIMIT 30
(换行符分隔换行符)
如果vote_timestamp是每个“投票”的时间,则Count(*)是该日的计数,而vote_target_id是投票的具体目标。
目前,这适用于目标至少有一次“投票”的所有日子,但我希望它也能在没有投票的日子里将TotalVotes返回为0,而不是根本没有行。
这可以(以及如何?)在MySQL或PHP中完成? (要么很好,因为PHP会对其进行进一步处理,因此可以使用任何代码)。
谢谢
答案 0 :(得分:2)
问题是如何为没有行的天数生成记录。 This所以问题有一些方法。
答案 1 :(得分:-2)
看一下that解决方案,对我来说,这样做的快速修复就更简单了。
$result = mysql_query($sql) or die('Internal Database Error');
if (mysql_num_rows($result) == 0) { return false; }
while($row = mysql_fetch_assoc( $result )) {
$votes[$row['Date']] = $row['TotalVotes'];
}
// fill 0s with php rather than using mysql
$dates = array_keys($votes);
for ($t = strtotime($dates[count($dates)-1]); $t <= time(); $t +=86400) {
$date = date('Y',$t).'-'.date('m',$t).'-'.date('d',$t);
if (!array_key_exists($date,$votes)) {
$votes[$date] = 0;
}
}
非常感谢,