2017-03-07 8 views
0

私は2つのテーブルがあります。。どのようにデータベース列の合計を得る

pre_order
enter image description here

receive_pre_order
enter image description here

私の質問は、pre_orderテーブルからすべての情報を取得し、すべての数量受信したフォームのSUMを取得する方法ですreceive_pre_orderテーブルに対してそれはpre_order idです。
recieve_pre_orderに次のデータがあるとします。

+--------------+------------+-------------------+ 
| pre_order_id | product_id | quantity_recieved | 
+--------------+------------+-------------------+ 
|   1 |   1 |    10 | 
|   1 |   1 |    20 | 
|   1 |   1 |    10 | 
+--------------+------------+-------------------+ 

それはpre_order_id 1に対してquantity_recieved = 40を返す必要があります。

は、今私が試してみました:

$this->db->select_sum('quantity_recieved'); 
$this->db->from('recieve_pre_order'); 
return $this->db->get(); 

それが機能していますが、それは一つのテーブルからデータを取得しています。
しかし、私は両方のテーブルからデータをフェッチしたいです。

誰か助けてもらえますか?

+0

http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-veryを参照してください。 -simple-sql-query – Strawberry

答えて

1

2つのテーブルテーブル(rpo.pre_order_id = po.id)を結合します。 po.idの結果をグループ化すると、同じpo.idのすべての行が1つの行にグループ化されます。 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; 
1

この

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

ではなく、テーブルを結合するサブクエリを試してみてください。

$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(); 
関連する問題