基于我之前的问题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值)只)。
任何帮助将不胜感激。谢谢。
答案 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');