如何从Codeigniter中的三个不同的表连接并获取和?

时间:2018-12-27 03:18:06

标签: php mysql codeigniter

我有一个这样的情况,我想从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_selltbl_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 ");

2 个答案:

答案 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();
}
相关问题