2つのテーブルがあります。1つはすべての製品用で、もう1つは新規購入製品用です。
製品表
Item Qty
301 2
302 5
303 3
304 4
305 6
購入表
Item Qty Status Date
302 5 used 09-15-2015
303 5 reserve 09-20-2015
301 5 used 09-20-2015
302 5 reserve 09-20-2015
304 5 used 10-15-2015
303 5 reserve 10-15-2015
商品テーブルにいくつの数量を表示し、その数量をpurchases table
に結合したいProduct Table
これは私の最初のSQLクエリです
SELECT product_name, product_quantity, quantity
FROM products
LEFT OUTER JOIN purchases ON products.ID = purchases.product_ID
WHERE product_status !='deleted' AND status != 'used'`.
ただし、返品purchases table
は予備の商品のみとなります。
私が達成したいのは
Item Qty Reserved Qty Total
301 2 0 2
302 5 5 10
303 3 10 13
304 4 0 4
305 6 0 6
新しいSQLクエリを更新します
SELECT product_name, product_quantity, p.quantity
FROM products
LEFT OUTER JOIN (SELECT * FROM purchases
WHERE status = 'reserved'
GROUP BY product_ID) AS p ON p.product_ID = products.ID
WHERE products.product_status !='deleted'`
ただし、予約済みの数量では0を返します。
予約済みアイテムの数量を合計してからGROUP BY
、次のように使用する必要があることを除いて、クエリに関してはほぼそこにあります。
SELECT
pd.item AS 'Item', pd.qty AS 'Qty', IFNULL(pr.reserved_quantity, 0) AS 'Reserved Qty', (pd.qty+IFNULL(pr.reserved_quantity, 0)) AS 'Total'
FROM
product pd
LEFT OUTER JOIN (SELECT item, SUM(qty) AS 'reserved_quantity' FROM purchases WHERE `status`='reserve' GROUP BY 1) AS pr ON pd.item=pr.item
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加