【发布时间】:2015-11-13 06:49:03
【问题描述】:
我尝试获取每个最新和最低报价的产品列表
餐桌产品:
id | name
餐桌优惠:
id | product_id | price | created | dealer_id
表格无效:
id | offer_id | status
我试过了:
SELECT * FROM product INNER JOIN
(
SELECT offer.product_id , offer.price
FROM offer
LEFT JOIN invalids
ON offer.id = invalids.offer_id
WHERE invalids.id IS NULL
GROUP BY offer.dealer_id
ORDER BY offer.created DESC
) o
ON o.product_id = product.id
ORDER BY product.name
我已尝试使用此优惠值的 sqlfiddle http://sqlfiddle.com/#!9/32658/3:
(`id`, `price`, `dealer_id`, `product_id`, `created`)
(1,12.60,1,1,'2015-05-17 08:44:45'),
(2,13.00,1,1,'2015-08-17 08:44:45'),
(3,20.00,1,1,'2015-08-17 08:45:30'),
(4,10.00,1,1,'2015-08-17 08:45:46'),
(5,4.00,2,1,'2015-05-17 08:44:11'),
(6,11.00,2,1,'2015-08-17 08:44:46'),
(7,5.00,2,1,'2015-08-17 08:45:31'),
(9,110.00,2,2,'2015-08-17 08:46:58'),
(10,11.00,2,2,'2015-08-17 08:47:12');
产品 ID 1 的预期值是商品 ID 7 和价格 5。
我认为我必须意识到这些步骤:
- 按
created订购优惠并按dealer_id分组以获得最新条目 - 从第 1 步获取结果并按价格排序以获得最低价格。
- 为所有产品制作这个
也许我必须使用第二个 SELECT FROM offer 和 GROUP BY 和 ORDER BY 但我如何从第一个(外部)选择中获得 product_id?
【问题讨论】:
-
产品 1 的最新报价是 id 4,而不是 id 7。您想要最新报价还是最低报价?如果您想要最低的报价,为什么不使用价格为 4 的 id 5 呢?我不明白。
-
为什么不提供5胜?这是4美元和更早的时间?是不是因为您想要经销商/产品的最新报价(每个 1 个),然后选择其中最低的价格(从而选择经销商/价格)?
标签: mysql select sql-order-by