带有 SUM 的 CodeIgniter 组

CodeIgniter Group with SUM

我想学习 CodeIgniter,示例如下:

我有一个数据库(tbl_points)

我有这样的输出:

id sku point
1 001 10
2 001 -1
3 002 5
4 002 -2
5 001 -1

我很难根据 SKU 进行分组,然后将每个值相加。你能帮我做成这样吗?非常感谢。

id sku point
1 001 8
2 002 3

这可以通过简单的 mysql SUM() 解决,请参阅 Aggregate Function Descriptions

select * , sum(`point`) as my_point
from `tbl_points`
group by `sku`

如果您真的需要一个新的“id”,您可以使用 User-Defined Variable 扩展您的查询,为每个新行添加 +1:

set @row_num=0;
select * , sum(`point`) as my_point, @row_num:=@row_num+1 AS new_id
from `tbl_points`
group by `sku`

勾选对应的mysql fiddle

使用 Codeigniter 查询生成器创建该查询 CI3.x 的示例:

$this->db->select('* , sum(point) as my_point');
$this->db->group_by('sku');
$query = $this->db->get('tbl_points');

并且对于 User-Defined 变量,您需要 2 个查询,例如:

$sql="set @row_num:=0";
$this->db->query($sql);

$sql="select * , sum(`point`) as my_point, @row_num:=@row_num+1 AS new_id
from `tbl_points`
group by `sku`
";

$query=$this->db->query($sql);

为了快速输出结果,可以这样写:

echo '<pre>';print_r($query->result());

无论如何建议检查一下How to Generate CI Query Results

如果要为 ci3 编写查询。

$this->db->select('sku');
$this->db->select_sum('point');
$this->db->from('tbl_points');
$this->db->group_by('sku');
$query = $this->db->get(); 
$row = $query->result();
          
print_r($row);

你需要先求和,然后按这个字段分组:-

$sql = "select id,sku, sum(`point`) as my_point from `tbl_points`
group by `sku`";

$query = $this->db->query($sql);

输出结果:-

echo '<pre>';
print_r($query->result());

你的输出结果:-

id  sku my_point
1   001 8
3   002 3