获取Group By值

时间:2018-04-02 04:04:24

标签: php mysql codeigniter

基于我之前的问题Get Data from Array

事实证明,只显示一条具有完整SUM值的记录。 我一直试图像这样添加GROUP_BY子句:

$this->db->select('t1.act_id, t2.login, t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes, '
             . 't3.category, t1.total_time, SUM(t1.total_time) as total')                
            ->from('activity as t1')                
            ->join('user as t2', 't1.user_id = t2.user_id', 'LEFT')
            ->join('customer as t3', 't1.cust_name = t3.cust_name', 'LEFT')                 
            ->where('t2.login', $user)
            ->where('MONTH(t1.date_added)', $month)
            ->group_by ('t1.user_id');

除非我删除SUM语句,否则结果仍然是完整SUM的同一条记录。

同时如果我将GROUP_BY参数更改为(t1.act_id)这是该表的主键,所有记录显示但总和不是(它只显示第一条记录的SUM值)只)。

任何帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

最后设法通过添加子选择查询来获得所需的结果,这就是我的工作:

$this->db->select('t1.act_id, t2.login, t1.cust_name, t1.act_type, t1.act_detail, t1.date_added, t1.date_modified, t1.act_notes, '
             . 't1.category, t1.total_time')
            ->select("(select SUM(total_time) from activity where user_id = t2.user_id AND MONTH(date_added)= $month)  as total", FALSE)
            ->from('activity as t1')
            ->join('user as t2', 't1.user_id = t2.user_id', 'LEFT')
            ->where('t2.login', $user)
            ->where('MONTH(t1.date_added)', $month)
            ->order_by('t1.date_added', "desc")
            ->group_by ('t1.act_id');