我有一个名为 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'))
顺便说一句,我正在使用codeigniter。