0

次の形式で 2 つのテーブルから要約を出力する必要があります。

Product | Grand Total
--------+---------
 Book   | 8000
 Pen    | 5000
 Ruler  | 0

テーブル製品

 id  | name
-----+---------
 1   | Book
 2   | Pen
 3   | Ruler

table_transaction

 id  | cashier | product | total
-----+---------+---------+---------
 1   | john    |    1    | 5000
 2   | doe     |    1    | 3000
 3   | john    |    2    | 2000
 4   | other   |    2    | 3000

これは 1 つのクエリだけで実行できますか?

編集: 以前、私は table_transaction でこのクエリを使用していました:

$this->db->select('product');
$this->db->select('total');
$this->db->from('table_transaction');
$this->db->select_sum('total', 'grand_total');
$this->db->group_by('product'); 
$query = $this->db->get();

ただし、まだ表にない製品は表示されていません。まだ取引がなくても、すべての商品を印刷したい。

4

2 に答える 2

0

これを試して:

$this->db->select('t1.name, sum(t2.total) as grand_total');
$this->db->from('table_product t1');
$this->db->join('table_transaction t2', 't2.product = t1.id', 'left');
$this->db->group_by('t1.name');
$query = $this->db->get();

SQLフィドルのデモはこちら: http ://sqlfiddle.com/#!2/04164/2

于 2013-02-19T07:03:30.383 に答える
0

トランザクション テーブルに 3 番目の製品の関係がない場合でも、2 つのテーブルの概要を取得するには完全結合を使用する必要があります。

select product.name,transaction.total from product left join transaction on product.p_id = transaction.p_id
于 2013-02-19T05:49:38.277 に答える