首页 > 解决方案 > 如何计算 2 个表格中的库存

问题描述

我有这样的第一张桌子(tbl_med)

id_med  name    stock
1       abc      10
2       bcd      15
3       efd      11

像这样的第二个表(tbl_trans)

id_trans   id_med  qty
1          1       4      
2          1       2      
3          2       3

如何计算第一张表中的最后库存或剩余库存?我试过了,但没有显示 id_med 3 的剩余库存

SELECT tbl_med.stock, tbl_med.id_med, tbl_med.stock - SUM(tbl_trans.qty) AS stock_left FROM tbl_med
JOIN tbl_trans ON  tbl_med.id_med= tbl_trans.id_med
GROUP BY tbl_med.id_med

标签: mysqlsql

解决方案


我认为你只需要coalesce()left join

SELECT m.stock, m.id_med, m.stock - COALESCE(SUM(t.qty), 0) AS stock_left
FROM tbl_med m LEFT JOIN
     tbl_trans t
     ON m.id_med = t.id_med
GROUP BY m.id_med;

SELECT请注意,通常在 SQL中包含非键的未聚合列GROUP BY是错误的。但是,如果GROUP BY具有表的主键,它就可以正常工作。我假设id_med是 的主键tbl_med


推荐阅读