带有 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
我想学习 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