从两个相关表中获取库存并将结果连接到另一个表

时间:2014-03-19 14:39:40

标签: mysql stocks

我对所述标题有疑问。我想从这两个表中获取stocks_on_hand,即:

stocks_added
product_id  quantity_added
ANK001      50

stocks_released
product_id  quantity_released
ANK001      20
获取stocks_on_hand(两个表的结果)之后

,我想将它加入到产品表中:

product_id  product_name  price
ANK0001     ANKLET        200

1 个答案:

答案 0 :(得分:0)

使用joins和sum():

select
    p.product_id, product_name, price,
    coalesce(sum(quantity_added), 0) - coalesce(sum(quantity_released), 0) as stocks_on_hand 
from products p
left join stocks_added a on a.product_id = p.product_id
left join stocks_released r on r.product_id = p.product_id
group by p.product_id, product_name, price

使用外部(即左侧)连接意味着无论是否存在库存移动表中的行,您都会为每个产品获取一行。使用coalesce()表示当库存表中没有行时,使用默认值零。