0

我有 2 个表:stock_material_details 和 stock_consumed 有一个共同提交的 item_id。stock_material details 已添加_quantity 作为列,stock_consumed 作为consumed_quantity 作为列。

每次将商品添加到库存时,它都会添加到 added_quantity 下的 stock_material_details(table) 中。

每次消耗一个项目,它会被添加到 comsumed_quantity 下的 stock_consumed 中。
我想编写一个查询,通过以下方式获取特定项目的可用总量:

select sum(a.added_quantity ) - sum(b.quantity_consumed) as available 
from stock_material_details a 
join stock_consumed b on a.item_id = b.item_id 
group by a.id

上面的查询在多行数据的情况下没有给出正确的结果。需要一些建议。

4

3 回答 3

0

选择 item_id, sum(a. added_quantity ) - sum(b.quantity_consumed) 可从 stock_material_details a join stock_consumed b on a.item_id = b.item_id group by a.item_id

尝试在选择中添加“item_id”。

我尝试在那里使用您的代码,但它不起作用。

试试这个:

select item_id, SUM(added_quantity) - (Select SUM(quantity_consumed) from stock_consumed b where b.item_id = item_id) FROM stock_material_details Group by item_id

希望它有效,因为我只是在我的脑海中编译它

愿原力与你同在

于 2013-03-06T10:03:19.930 回答
0

要混合两个不同的聚合,您将需要子查询:

SELECT sum(a.sum_a) - sum(b.sum_b) AS available FROM
(SELECT a.item_id, sum(a.added_quantity ) AS sum_a
FROM stock_material_details a
GROUP BY a.id) AS a
JOIN
(SELECT b.item_id, sum(b.quantity_consumed) AS sum_b
FROM stock_consumed b
GROUP BY b.id) AS b
ON a.item_id = b.item_id
于 2013-03-06T10:04:31.333 回答
0

如果您没有跟踪结果中的每个项目,就不可能知道这些数字对应于什么:

select a.item_id, sum(a.added_quantity ) - sum(b.quantity_consumed) as available 
from stock_material_details a 
join stock_consumed b on a.item_id = b.item_id 
group by a.id
于 2013-03-06T10:04:59.040 回答