简体   繁体   English

Codeigniter。 如何获取数据库列的总和

[英]Codeigniter. How to get sum of database columns

I have two tables . 我有两张桌子。

pre_order 预购
在此处输入图片说明

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.idrpo.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM