クエリの実行時に有効な他の価格がない場合に常に有効な1つの価格を設定できる、いくつかの製品価格の表を取得しました。
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)を取得する方法がわからないため、ここでサポートが必要です。一定期間有効な価格が2つ以上ある場合は、後で開始する価格を取得する予定です。これまでのところ私は:
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
ところで、私はこのテーブル構造に本当に満足していません。さらにコメントがあれば読みたいと思います。どうもありがとうございます。