我得到了一些产品价格的表格,我可以在其中设置一个始终有效的价格,如果在查询运行时没有其他有效的价格。
id | item_id | valid_from | valid_to | price
---+---------+------------+------------+------
1 | 1337 | 2013-01-17 | 2013-01-18 | 35.50
2 | 1337 | NULL | NULL | 39.95
3 | 1337 | 2013-01-13 | 2013-01-18 | 36.00
我不知道如何获得正确的价格NOW()
(今天是 35.50),需要一些帮助。如果有两个或更多价格在一段时间内有效,我希望得到稍后开始的价格。到目前为止,我得到了:
SELECT price
FROM my_table
WHERE item_id = 1337
AND (
valid_from <= NOW() AND
valid_to >= NOW()
) OR (
id NOT IN (
SELECT id
FROM my_table
WHERE item_id = 1337
AND valid_from <= NOW()
AND valid_to >= NOW()
) AND
valid_from IS NULL AND
valid_to IS NULL
)
ORDER BY valid_from DESC
LIMIT 1
顺便说一句,我对这个表格结构并不满意。如果您对此有其他评论,我想阅读它们。非常感谢。