私の目標は、承認された注文書のアイテムの記録された購入価格を取得することです。
Purchase_Orders
テーブルには、注文番号とそのステータスなど、注文のメタデータが含まれています (たとえば、承認された場合は 1、拒否された場合は 0)。
Purchase_Ord_Contents
テーブルにはコンテンツ レコードが含まれており、外部キーを介して共有インデックスの親注文書にリンクされています。order_number)
例: データベースに 2 つの注文があり、1 つは承認され、もう 1 つは拒否されました。データは次のように表されます。
=========================================
PURCHASE_ORDERS TABLE
=========================================
id | order_number | order_status
-----------------------------------------
1 PO_100 0
2 PO_101 1
3 PO_102 1
===================================================
PURCHASE_ORD_CONTENTS TABLE
===================================================
id | order_number | purchase_price | sku
---------------------------------------------------
1 PO_100 1.50 APPLE
2 PO_100 1.50 ORANGE
3 PO_101 2.00 APPLE
4 PO_101 2.00 ORANGE
5 PO_102 1.75 BANANA
クエリは行 3、4、および 5 を返す必要があります。これはPO_101
、承認されたのに対し、PO_100
拒否され、行 5 が特定の SKU の唯一のレコードであるだけでなく、注文も承認されたからです。私はいくつかの異なるアプローチを試みましたが、承認されていない発注書にあった部品を除外するかorder_number
、最低のpurchase_price
.
ここに私がこれまでに持っているものがあります(正しく機能していません)
SELECT a.*
FROM purchase_ord_contents AS a
JOIN (SELECT sku,
MIN(purchase_price) AS min_price
FROM purchase_ord_contents
GROUP BY sku) AS b
ON ( a.sku = b.sku
AND a.purchase_price = b.min_price )
WHERE a.order_number
IN (
SELECT order_number
FROM purchase_orders
WHERE order_status != 0
)
このクエリは、テーブルからレコードを正常に返しますが、が 0 の発注書にあっpurchase_ord_contents
た最低のレコードを省略します。purchase_price
order_status
あなたがおそらく今までに判断したように、私は「高度な」SQLクエリに精通していません。お時間をいただきありがとうございます。さらに情報を提供する必要がある場合は、お気軽にお問い合わせください。