MYSQL根据id添加列值

时间:2015-09-02 12:10:34

标签: mysql

我有两张桌子,

顺序

product_id | name     | quantity
-----------------------------
136        | product1 | 10
137        | product2 | 18
138        | product3 | 5
136        | product1 | 25
136        | product1 | 35

产品

id       | product_id | quantity
-----------------------------
1        | 136        | 100
2        | 137        | 90
3        | 138        | 145
4        | 139        | 100

我想要剩余数量的结果,即在oreder表中添加基于product_id的数量。此答案基于product_id从产品表中减去。

例如,我假设product_id是136.在oeder表中有三列存在。 添加数量(即)10 + 25 + 35 = 70。

从产品表的数量中减去此值。在product表中,product_id的数量为100。 所以结果是100-70 = 30。 我想输出是30。 这也将跟随所有其他product_id。

mysql是,

$sql = "SELECT op.name, o.quantity-SUM(DISTINCT op.quantity) AS total FROM " . DB_PREFIX . "order op LEFT JOIN" 。 DB_PREFIX。 " {产物{1}}

2 个答案:

答案 0 :(得分:1)

在加入之前进行聚合

select p.*, (p.quantity - coalesce(q, 0)) as q_remaining
from product p left join
     (select product_id, sum(quantity) as q
      from `order`
      group by product_id
     ) o
     on o.product_id = p.id;

答案 1 :(得分:0)

select a.productid,a.quantity-b.orders
from product b
left join (select product_id,sum(quantity) as orders
            from   order
            group by product_id) b on a.product_id=b.product_id