我有一个这样的情况,我想从CodeIgniter中的三个不同的表中进行报告,然后从其他表中进行总结,有关更多详细信息,请参见:
我有tbl_product
桌:
+----------+----------+---------+
| id_prdct | product | remark |
+----------+----------+---------+
| 1 | marriage | remark1 |
| 2 | office | remark2 |
| 3 | school | remark3 |
+----------+----------+---------+
然后我像下面这样创建tbl_sell
表:
+---------+----------+------------+------------+
| id_sell | id_prdct | item_sell | price_sell |
+---------+----------+------------+------------+
| 1 | 1 | dress | USD 500 |
| 2 | 1 | shoes | USD 600 |
| 3 | 1 | decoration | USD 1500 |
| 4 | 2 | dress | USD 300 |
| 5 | 2 | shoes | USD 500 |
| 6 | 3 | shoes | USD 900 |
+---------+----------+------------+------------+
和tbl_buy
如下:
+--------+----------+------------+------------+
| id_buy | id_prdct | item_buy | price_buy |
+--------+----------+------------+------------+
| 1 | 1 | dress | USD 250 |
| 2 | 1 | shoes | USD 300 |
| 3 | 1 | decoration | USD 1000 |
| 4 | 2 | dress | USD 200 |
| 5 | 2 | shoes | USD 300 |
| 6 | 3 | shoes | USD 500 |
+--------+----------+------------+------------+
在我的网页上,我想得到如下结果:
+----+----------+------------+----------+----------+
| No | Product | Sum Sell | Sum Buy | Profit |
+----+----------+------------+----------+----------+
| 1 | marriage | USD 2600 | USD 1550 | USD 1050 |
| 2 | office | USD 800 | USD 500 | USD 300 |
| 3 | school | USD 900 | USD 500 | USD 400 |
+----+----------+------------+----------+----------+
所以我想从tbl_sell
和tbl_buy
做一个摘要,然后在我的网页上显示它们,然后做一个摘要(利润),作为我上面的最后一个表格。
有什么建议可以解决我的情况吗?
谢谢...
================================================ =========== [更新答案]
我已经尝试过了,但是仍然出现错误,对此代码有任何建议吗?
$d['data'] = $this->db->query("select sum(tbl_sell.price) AS total_sell, sum(tbl_buy.price) AS total_buy
left join tbl_sell on tbl_sell.id_prdct=tbl_product.id_prdct
left join tbl_buy on tbl_buy.id_prdct=tbl_product.id_prdct
from tbl_product
WHERE tbl_sell.id_prdct=tbl_product.id_prdct AND tbl_buy.id_prdct=tbl_product.id_prdct ");
答案 0 :(得分:1)
尝试使用此sql:
SELECT p.id_prdct,
p.product,
sell.total,
buy.total
FROM tbl_product p
LEFT JOIN (SELECT id_prdct,
Sum(price_sell) total
FROM tbl_sell
GROUP BY id_prdct) sell
ON p.id_prdct = sell.id_prdct
LEFT JOIN (SELECT id_prdct,
Sum(price_buy) total
FROM tbl_buy
GROUP BY id_prdct) buy
ON p.id_prdct = buy.id_prdct;
答案 1 :(得分:0)
尝试这个,希望对您有帮助。
function functionName($product_id){
$this->db->select('tbl_product.*,sum(tbl_sell.price_sell),sum(tbl_buy.price_buy)');
$this->db->join('tbl_sell','tbl_sell.id_prdct=tbl_product.id_prdct');
$this->db->join('tbl_buy','tbl_product.id_prdct=tbl_buy.id_prdct');
return $this->db->where('tbl_sell.id_prdct',$product_id)->where('tbl_buy.id_prdct',$product_id)->get('tbl_product')->result_array();
}