0

私は 2 つのテーブルを持っています。stock_material の詳細には、列として added_quantity があり、列として stock_consumed が consumer_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

2 つの異なる集計を混合するには、サブクエリが必要になります。

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 に答える
0

item_id、sum(a.added_quantity ) - sum(b.quantity_consumed) を stock_material_details から入手できるものとして選択 a.item_id による a.item_id = b.item_id グループで stock_consumed b を結合

selectに「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 に答える