所以我需要的是得到一个对象的最便宜的价格。可以有n个价格,价格可以是周价格或日价格。无论是一天还是一周的价格,我都需要最便宜的价格。我试着用下面的查询。但是我也得到了一些NULL行。其次,如果一天的价格是最便宜的,那么我需要那一天的价格,而不是7的倍数,就像我下面的查询那样。MySQL最便宜的价格查询
所以下面的数据应该得到我这两个目标搜索时:
id | oid | price | type (day or week)
-------------------------------------
2 | 1 | 65 | w
3 | 2 | 9 | d
我希望这是可以理解的。谢谢你的帮助!
的对象表:
id | title
-----------
1 | Object 1
2 | Object 2
价格表:
| oid | price | type (day or week)
----------------------------------
| 1 | 10 | d
| 1 | 65 | w
| 2 | 9 | d
| 2 | 70 | w
我的查询:
SELECT o.id, p.oid, p.price, p.type
FROM objects AS o
LEFT JOIN prices AS c ON p.oid= o.id
AND p.price =
(
SELECT MIN(IF(type="w",price, price*7)) FROM prices
WHERE oid= o.id
)
LEFT JOIN ...
LEFT JOIN ...
WHERE ...
GROUP BY o.id ORDER BY p.price ASC
的话,我没有得到的结果在所有的一些对象 – Mike
更新中...但它取决于NULL是否在您的表中或来自JOIN –
它取决于IF语句以及价格表中的日/周价格的顺序。这表明整体错误的查询。价格的顺序应该没有关系。 – Mike