【发布时间】:2015-11-05 05:06:54
【问题描述】:
我正在制作一个网站来比较不同商店之间的产品价格。我创建了一个搜索功能,我想在其中显示当前的最低价格,这就是我有点卡住的地方。
我有一张表Products 包含基本信息,还有一张表product_store 包含不同商店中不同产品的奖品。下面是这些表的数据库的基本架构:
+-----------+ +---------------+
| products | | product_store |
+-----------+ +---------------+
| id | | product_id |
| name | | store_id |
+-----------+ | price |
| created_at |
+---------------+
product_store 表有多个相同product_id 和store_id 的价格,因此我可以创建价格历史记录。
现在我想创建一个查询来获取所有产品及其目前的最低价格。所以,你取每个店铺的价格最高的created_at,从这个集合中我想得到最低的价值。
这是我迄今为止尝试过的:
select products.*, prices.price
from products
left join (
SELECT p1.product_id, min(p1.price) as price, p1.created_at
FROM product_store p1
WHERE p1.created_at = (SELECT max(created_at) FROM product_store p2 WHERE p2.store_id = p1.store_id
) as prices
on prices.product_id = products.id
我搜索每个商店和产品的最高 created_at 并获得这些行的最低价格。然而,这会产生一些非常奇怪的结果,其中产品之间的价格会混淆,而一些有价格的产品在结果中没有任何价格。
有人可以帮我为这个问题创建一个好的查询吗?
提前致谢。 :)
【问题讨论】:
-
您想要每件产品的最低价格还是最低价格的商店?如果多家商店的价格最低,您要其中一家还是全部?
-
我也喜欢店名。但我只想展示一家商店。
标签: mysql sql group-by sql-order-by min