指定された日付に応じて異なる価格を格納する room_prices というテーブルがあります。サンプルデータはこちら。
id room_id date_from date_to price
1 1 3500.00
25 1 7/28/2012 7/29/2012 3600.00
27 1 8/24/2012 8/27/2012 3000.00
49 1 11/12/2012 11/16/2012 4000.00
最初の行は、部屋 1 (room_id = 1) のデフォルト料金です。
ゲストが部屋を予約すると、システムは最初に room_prices テーブルの価格を調べます。ゲストが予約した日付がテーブルで見つかった場合、デフォルトの価格ではなく、選択した日付に従って価格が取得されます。
元。
ゲストが 2012 年 11 月 10 日から 2012 年 11 月 11 日までに部屋を予約した場合、料金は 3,500 になります。ゲストが 2012 年 11 月 12 日から 2012 年 11 月 14 日までに部屋を予約した場合、料金は 4,000 になります。
ゲストが 2012 年 11 月 10 日から 2012 年 11 月 13 日までに部屋を予約した場合、平均価格は 3750 になります。以下の表を参照してください。
11/10/2012 3500
11/11/2012 3500
11/12/2012 4000
11/13/2012 4000
3750
私の質問は、平均価格を取得する単一の SQL コードがあるかどうかです。
アップデート:
私はこのSQLを無駄に試しました:
SELECT avg(price) as avg_price
FROM lf_rooms_prices
WHERE room_id = 1
AND ((DATE_FORMAT(date_from, '%m/%d/%Y') >= '11/10/2012'
AND DATE_FORMAT(date_from, '%m/%d/%Y') < '11/10/2012')
OR (DATE_FORMAT(date_to, '%m/%d/%Y') > '11/13/2012'
AND DATE_FORMAT(date_to, '%m/%d/%Y') <= '11/13/2012'))
ところで、私はコードイグナイターを使用しています。