0

我需要从以下格式的两个表中打印摘要:

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

表产品

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

表交易

 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

即使事务表中没有第三个产品的关系,您也需要使用完全连接来获取两个表的摘要......

select product.name,transaction.total from product left join transaction on product.p_id = transaction.p_id
于 2013-02-19T05:49:38.277 回答
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 fiddle 演示在这里: http ://sqlfiddle.com/#!2/04164/2

于 2013-02-19T07:03:30.383 回答