2011-02-16 97 views
0

我需要提供自特定月份和年份以来我们的mysql数据库使用的带宽的月度报告,例如, 2009年11月,我可以使用以下查询输出任何特定月份的正确数据;获取从指定月份到当月的每个月的数据

$query='SELECT SUM(radacct.AcctInputOctets) AS uploads,SUM(radacct.AcctOutputOctets) AS downloads FROM radacct WHERE radacct.AcctStartTime BETWEEN "2010-11-00" AND "2010-12-00"'; 
    $result = mysql_query($query); 
    $row = mysql_fetch_array($result); 
    echo '<tr><td>December</td><td>'.$uploads.'</td><td>'.$downloads.'</td></tr>'; 

我需要把这个成从定义的下月起即开始$ =“2009-11-00”,并打印出每月直至并包括当前月份创纪录的一环。无论我尝试什么,我都无法让它工作!

+1

你说“不管你尝试了什么“,你试过了什么?这似乎是一个相当简单的循环,在开始日期和结束日期之间添加一个月直到指定的日期就足够了。 – anothershrubery 2011-02-16 12:19:27

+0

首先你需要一些月份的生成器,并计算需要查询的月份数(N次)..那么它只是从0到N循环,并生成月,发送它查询和添加结果..不是很好在PHP所以只是想法.. – Raven 2011-02-16 12:22:17

回答

2

添加分组参数:

SELECT year(radacct.AcctStartTime), month(radacct.AcctStartTime), ... 
FROM ... 
WHERE radacct.AcctStartTime > '2010-09-00' 
GROUP BY year(radacct.AcctStartTime), month(radacct.AcctStartTime) 

这将使你每年/月已在数据库中的至少一个项目的汇总数据,自2010年九月