Mysql获取每天的行数

时间:2009-11-16 03:29:59

标签: mysql date count days

我当前的查询是:

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会对其进行进一步处理,因此可以使用任何代码)。

谢谢

2 个答案:

答案 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;
    }
}

非常感谢,