製品テーブルをリストしようとしていますが、配送注文へのリンクを使用して、特定のステータスの在庫の合計を取得しています。割り当て、発送など
配達が現在どこにあるかを定義する「ステータス」フィールドがあります。1 = 割り当て済み、2 = 発送済み、3 = 配達済みなど
これは私がこれまでに得た限りです
SELECT product.*, sum(quantity) AS allocated FROM product
LEFT JOIN delivery_product ON ( product.id = product_id )
LEFT JOIN delivery ON ( delivery_id = delivery.id AND delivery.status = 1 )
GROUP BY code
ORDER BY code
delivery_product からのすべての数量の一致が含まれますが、配送注文ステータス = 1 のもののみを含めたいと思います。これは、ステータス制限が開始される前に最初に delivery_product テーブルに参加しているためだと思いますが、他にどうすればこれを行うことができますか?
私の仕事に完全に取り組むためのより良い方法を見ることができれば、ボーナスポイント:)
-
product
id code stock
1 ABC 1000
2 DEF 2000
delivery
id status date etc
1 1 etc etc
delivery-product
id delivery_id product_id quantity
1 1 1 500
results
product.id product.code product.stock allocated
1 ABC 1000 500
2 DEF 2000 0