我一直在寻找2天的答案,但仍然一无所获。请帮我。
我有一个包含产品、产品价格和价格注册日期的数据库:
product_id | price | date
-------------------------
1 | 8.95 | 2012-12-01
2 | 3.40 | 2012-12-01
1 | 9.05 | 2012-12-19
3 | 2.34 | 2012-12-24
3 | 2.15 | 2012-12-01
1 | 8.80 | 2012-12-19
1 | 8.99 | 2012-12-02
2 | 3.45 | 2012-12-02
请注意,同一天的产品可能具有不同的价格值(第 3 行和第 6 行)。这是因为单一产品有许多供应商。数据库上也有一个供应商列,但我发现它与解决方案无关。如果我错了,您可以将其添加到解决方案中。
基本上我想要的是编写一个返回两个组合数据集的查询,如下所示:
- 第一套是按上个月插入的产品的最低价格制作的。由于今天是 1 月 15 日,查询应读取第 3、4 和 6 行,应用最低价格,并仅返回第 4 和第 6 行,均包含该产品上个月的最低价格。
- 第二套是最后插入的产品,上个月没有注册价格。即,对于第一组中未显示的产品,查询应搜索最后插入的产品。
我希望这很清楚。如果不是,请再问我。
该数据库的查询结果应该是:
product_id | price | date
-------------------------
1 | 8.80 | 2012-12-19 <-Min price for product 1 on last month
3 | 2.34 | 2012-12-24 <-Min price for product 3 on last month
2 | 3.45 | 2012-12-02 <-No reg for product 2 on last month, show last reg.
我已经尝试了所有方法:UNION,(DATE_SUB(CURDATE(),INTERVAL 1 MONTH),MIN(价格),MAX(日期)等。没有任何效果。我现在不知道在哪里搜索,请帮助我。