我有三张桌子
shipment (shipment_id, shipping_date)
company_order (company_order_id, shipment_id, company_id)
company_order_item (company_order_item_id, company_order_id, product_id)
几家公司聚集在一起,从一个制造商那里汇总订单。此总订单称为“装运”。公司在每批货物中订购一系列产品:因此,并非所有产品都会出现在任何一批货物或任何一家公司的货物中。
如何编写SQL查询来查找每个产品id的最新发货?
我已经看过了
SQL Query - Get Most Recent Revision(更简单的情况)。
最佳答案
您需要获取每个产品id的最长发货日期,然后检索发货详细信息
有点像
SELECT *
FROM (
SELECT coi.product_id,
MAX(s.shipping_date) MaxDate
FROM company_order_item coi INNER JOIN
company_order co ON coi.company_order_id = co.company_order_id INNER JOIN
shipment s ON co.shipment_id =s.shipment_id
GROUP BY coi.product_id
) sub INNER JOIN
company_order_item coi ON sub.product_id = coi.product_id INNER JOIN
company_order co ON coi.company_order_id = co.company_order_id INNER JOIN
shipment s ON co.shipment_id = s.shipment_id
AND s.shipping_date = sub.MaxDate