我希望使用Codegniter框架将列的值分组为另一列。在名为action的模型上,我使用了这种方法:
public function read_sum_groupby($table, $column,$groupBy,$where=array()){
$this->db->group_by($groupBy);
$this->db->where($where);
$this->db->select_sum($column);
$result = $this->db->get($table);
return $result->result();
}
然后我在这个视图上调用了这个方法
$installment_discount = $this->action->read_sum_groupby("installment","discount","installment_id",array("loan_id"=>$loan->id));
然后我打印出这样的输出
<pre>
<?php print_r($installment_discount); ?>
</pre>
结果是
你可以看到最后一个值是800,但我预期的是200。
我的桌子是
答案 0 :(得分:0)
11,12,13,14行的installment_id都是7759702.所以如果你按照installment_id分组然后选择select_sum(discount),那么sql将是这样的:
SELECT sum(discount) FROM installment WHERE loan_id=1 GROUP BY installment_id;
11,12,13,14行的折扣总结,所以你得到800。
如果你想获得200,那么sql应该是这样的:
SELECT sum(distinct(discount)) FROM installment WHERE loan_id=1 GROUP BY installment_id;
您的代码可以这样写:
$this->db->select_sum("distinct($column)", $column);