我的目标是获取记录的购买价格为项目接受的采购订单。MySQL的检索多表查询最低值
Purchase_Orders
表包含的元数据的顺序,如订单号和它的状态(例如,1表示接受,0为下降)。
Purchase_Ord_Contents
表包含内容的记录,这些记录通过外键链接到父采购订单上的共享指数order_number)
例如:我在我的数据库中的两个订单,一个已被接受,而另一个已下降。数据被表示为如下:
=========================================
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的唯一记录,这是也根据接受的订单。我已经尝试了几种不同的方法,但我似乎总是要么最终离开了那名上接受的采购订单,或检索的最低purchase_price
错误order_number
部分。
这里是我迄今(不正常)
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
)
该查询成功地返回从purchase_ord_contents
表中的记录,但它忽略了那名在采购订单的最低purchase_price
记录0
任何指导order_status
将不胜感激,我不是“先进”的SQL查询十分精通,你有可能已经确定。谢谢你的时间,请不要犹豫,问我是否应该提供任何进一步的信息。
我不是你要找的内容清晰。什么是“最低购买价格”要求?你想要任何采购订单上物品的最低价格吗? – Jay