[英]Codeigniter. How to get sum of database columns
I have two tables . 我有两张桌子。
receive_pre_order receive_pre_order
My Question is how to get all the information from pre_order table and get the SUM of all the quantity received form receive_pre_order table against that pre_order id
. 我的问题是如何从pre_order表中的所有信息,并让所有的收料数量形式receive_pre_order表的总和与该pre_order id
。
To make it clear suppose we have the following data in recieve_pre_order . 为了清楚起见,假设我们在recieve_pre_order中具有以下数据。
+--------------+------------+-------------------+
| pre_order_id | product_id | quantity_recieved |
+--------------+------------+-------------------+
| 1 | 1 | 10 |
| 1 | 1 | 20 |
| 1 | 1 | 10 |
+--------------+------------+-------------------+
It should return quantity_recieved = 40
against pre_order_id 1
. 它应该返回pre_order_id 1
quantity_recieved = 40
。
Right now I have tried: 现在我已经尝试:
$this->db->select_sum('quantity_recieved');
$this->db->from('recieve_pre_order');
return $this->db->get();
It is working but, it is getting data from one table. 它正在工作,但是它正在从一张表中获取数据。
But I want to fetch data from both tables. 但是我想从两个表中获取数据。
Join the two tables tables ( rpo.pre_order_id = po.id
). 连接两个rpo.pre_order_id = po.id
( rpo.pre_order_id = po.id
)。 Group the result for po.id
, so all Rows with the same po.id
will be grouped into one row. 将po.id
的结果po.id
,以便将所有具有相同po.id
行分组为一行。 sum(rpo.quantity_recieved)
will sum up the quantity for these groups. sum(rpo.quantity_recieved)
将汇总这些组的数量。
select po.id, sum(rpo.quantity_recieved)
from receive_pre_order rpo
join pre_order po on rpo.pre_order_id = po.id
group by po.id;
try this 尝试这个
$this->db->select("sum(recieve_pre_order.quantity_recieved),pre_order.id");
$this->db->from('recieve_pre_order');
$this->db->join("pre_order",'recieve_pre_order.pre_order_id = pre_order.id','left outer');
$this->db->where('recieve_pre_order.pre_order_id',your parameter);
$this->db->select('pre_order.*');
$this->db->select_sum('recieve_pre_order.quantity_recieved');
$this->db->from('pre_order');
$this->db->join("recieve_pre_order",'recieve_pre_order.pre_order_id = pre_order.id','left');
try sub query instead of joining table. 尝试子查询而不是联接表。
$this->db->select("po.*,SELECT(SUM(quantity_recieved) from receive_pre_order where pre_order_id = po.id) as total_recieved_quantity",FALSE);
$this->db->from('pre_order as po');
return $this->db->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.