带SUM的CodeIgniter组

gg0vcinb  于 2022-12-07  发布在  其他
关注(0)|答案(3)|浏览(103)

我想学习CodeIgniter,下面举一个这样的例子:
我有一个数据库(tbl_points)
输出如下:
| 标识符|库|点,点|
| - -|- -|- -|
| 一个|001年|10个|
| 2个|001年|-1个|
| 三个|002年|五个|
| 四个|002年|-2个|
| 五个|001年|-1个|
我很难根据SKU分组,然后把每个值加起来。你能帮我这样做吗?非常感谢。
| 标识符|库|点,点|
| - -|- -|- -|
| 一个|001年|八个|
| 2个|002年|三个|

xdyibdwo

xdyibdwo1#

如果要为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);
eh57zj3b

eh57zj3b2#

这可以通过一个简单的mysql SUM()函数来解决,请参见聚合函数描述

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');

而使用用户定义的变量,则需要两个查询,如下所示:

$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

3b6akqbq

3b6akqbq3#

您需要先求和,然后按以下字段分组:-

$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

相关问题