如何在MySQL中整个12个月分组?

时间:2013-09-28 22:24:06

标签: mysql cakephp-1.3

我正在使用cakephp 1.3。我在收入表中有日期字段。我想在一个循环中获得每月的总收入。以下是我的询问。

$income_and_hst = $Income->find('all', array(
                            'fields' => array('SUM(Income.amount) as income', 
                                            'SUM(Income.hst_amount) as hst', 
                                            'MONTH(date) as month'),
                            'conditions' => array(
                                'Income.income_account_id' => array(1,2,3,4),
                                'Income.user_id' => $this->Auth->user('id'),
                                'Income.account_id' => $this->Session->read('Account.default_account'),
                                'Income.date >' => $starting_date,
                                'Income.date <' => $ending_date,
                                ),
                            'group' => 'MONTH(date)',
                            )
                        );

这给了我5个月的收入。因为收入是5个月。我需要显示所有12个月,即使其他月份没有收入。如果那个月没有收入我想要0。

有人可以给我一个方向吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我的猜测是你无法使用该界面。您需要深入了解原始SQL(以及交叉连接),或者在周围的PHP代码中添加缺少的月份。我建议后者这样的东西应该工作(伪代码,我不记得php语法):

for ($row in $income_and_hst) {
    $income_and_hst_all[$row['month']] = $row
}

for ($month = 1;$month <= 12; $month++) {
    if ($income_and_hst_all[$month] == nil) {
       $income_and_hst_all[$month] = Array (
           'income' => 0, 
           'hst' => 0, 
           'month' => $month
       )
    }
}