使用MySQL / PHP按年份汇总值

时间:2010-01-27 20:05:31

标签: php mysql date

我在数据库管理页面上遇到了一个小问题,我用它来更新MySQL数据库中的值和总数,以便为网站生成各种数据和数据。

一些背景 - 有问题的数据库表包含慈善书摊的筹款总额,表格有三列 - 身份证,日期和金额。对特定年份或当前年度的总筹集量进行总结并不是问题 - 我已经从去年2月筹款开始时获得了一个总计,而今年已经有一个,这个工作正常。我刚刚意识到,虽然在本周增加的总数增加了虽然我知道所筹集的所有资金的总额,以及今年到目前为止筹集了多少资金,但去年的总数却没有显示出来。显然今年我可以把今年的总数除去总计,但我真的需要每年的总数来展示。

我在页面上显示了一个表格,显示了每年的筹款目标,我希望将年度总数添加到该表格中,以便随着时间的推移,我们可以看到每年的目标和当年筹集的金额

在显示运行总计的页面中,我有以下内容,它显示总计,以及当前年份的总数:

$result = mysql_fetch_array($query);
$sumtotal = $result["sum_total"];

$query2 = mysql_query("SELECT SUM(amountraised) AS year_total FROM fundraisingtotal WHERE YEAR(date) = YEAR(CURDATE());");
$result2 = mysql_fetch_array($query2);
$yeartotal = $result2["year_total"];
?>
<p class="dbpara">The current fundraising total since February 2009 is <b>&pound;<? echo "$sumtotal"; ?></b>.</p>
<p class="dbpara">The current fundraising total for this year (<?php echo date('Y'); ?>) is <b>&pound;<? echo "$yeartotal"; ?></b>.</p>

同样在同一页面上,我展示了筹款目标,这就是我遇到的问题,部分原因是筹款总额数据在一个单独的表格中与年度目标相关(年度目标在表格中)只有年份和目标),部分原因是显示年度目标的表使用while循环将数据从数据库写出到页面。这是我用来写出表格和数据的代码(我把表格单元格放在总计中,但显然没有代码):

date

显然是因为我需要一个不同的查询来计算一年中的总数,但我无法弄清楚如何将其用于while循环。我可以通过分离日期的年份来使用筹款金额表中的日期,但是因为每年的目标是在一个不起作用的不同表中,我真的不想要努力编码年份及其在数据库中引发的总数只是为了显示,当我可以(如果我能弄明白该怎么做)时,使用数据库来计算它。

我可能在这里遗漏了一些非常明显的东西,但我无法弄明白。有谁知道我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

使用“分组依据”查询一次性获取所有总计。

SELECT YEAR(date) as year, SUM(amountraised) AS year_total 
FROM fundraisingtotal 
GROUP BY YEAR(date)

答案 1 :(得分:2)

SELECT a.year , SUM( f.amountraised ) , a.target
FROM annualtarget a INNER JOIN  fundraisingtotal f ON (a.year = YEAR( f.date ))
GROUP BY a.year