テーブルstock_transactions
とstock_transactions_serials
. 在庫トランザクション テーブルは、倉庫からのすべての IN および OUT トランザクションを保持します。各トランザクションは、それに付随するシリアルのリストを持つことができます。これはstock_transactions_serials
、index が stock_transaction_id+serial_id である場所に記録されます。
qty > 0 のすべての場所のシリアルのリストを一覧表示するクエリを作成する必要があります。 http://sqlfiddle.com/#!9/520bfa/5で動作するデータを取得するために、ここで SQL fiddle を作成しました。
現在、私のSQLは次のようになっています:
SELECT
ST.id,
ST.warehouse_location_id,
ST.product_id,
SUM(ST.quantity) AS qty,
STS.serials AS serials
FROM stock_transactions ST
LEFT JOIN (
SELECT stock_transaction_id, GROUP_CONCAT(serial_id) AS serials
FROM stock_transactions_serials
GROUP by stock_transaction_id
) STS ON STS.stock_transaction_id = ST.id
WHERE
ST.document_id = 9
GROUP BY ST.warehouse_location_id
HAVING qty > 0
この SQL の結果は正しくありません。QTY は正しいが、シリアル番号が間違っている... このドキュメントの他の在庫取引と一緒に出た、または入ったシリアル番号は考慮されていません。
結果は次のようになります。
ロケーション 51 シリアル: 22229
ロケーション 52 シリアル: 22221、22222、22223、22224、22225
更新:私の質問をより明確にするためだけに。シリアル番号 A、B、C、D、E の 5 台のコンピュータを場所 X から Y に移動します。これで、場所 Y にシリアル番号のある 5 台のラップトップがあります。次に、シリアル番号 A の 1 台のラップトップを場所 Y から場所 X に移動します。そして、ロケーション X からロケーション Z までシリアル F の別のラップトップ... すべてのトランザクションの後で、すべてのロケーションでのラップトップの数量 (およびシリアル番号) を知りたいのですが....
UPDATE2: シリアル番号のないアイテムについても解決策を提供したいと考えています。たとえば、5 つの USB スティックを場所 A から場所 B に移動し、次に 2 つを B から C に移動し、最後に別の 2 つを A から C に移動します。各場所の数量はいくらですか。