我有这张表来查询不同季节(高,低)季节的房间价格
如何获得不同天数和不同季节的5天总价..
看这张表
这是我的命令(mysql)我想从 2013年4月7日* 到 2013年 11月7日获得10晚的总价格 *
select sum( case when dayname('2013-01-07') = 'Monday' then coalesce(prices.room_price , def.room_price) when dayname('2013-01-07') = 'Sunday' then coalesce(prices.room_price , def.room_price) )as TotalPrice from (select strtodate('2013-01-07' , '%Y-%m-%d') as thedate select strtodate('2013-01-08' , '%Y-%m-%d') as thedate ) dates left outer join ts_room_prices prices on dates.thedate between prices.season_start and prices.season_end cross join ts_room prices def on def.season_name = 'default'
我写了这个命令,但是还是没用
select sum(coalesce(prices.room_price , def.room_price) ) as TotalPrice from (select strtodate('2013-01-07' , '%Y-%m-%d') as thedate union all select strtodate('2013-01-08' , '%Y-%m-%d') as thedate ) dates left outer join ts_room_prices prices on dates.thedate between prices.season_start and prices.season_end and dayname(dates.thedate) = prices.dayofweek join ts_room_prices def on def.season_name = 'default' and def.hotel = 3233 and def.dayofweek = dayname(dates.thedate)
错误:#1305-功能saudihot_saudihotels.strtodate不存在
这是查询:
select sum(coalesce(prices.room_price , def.room_price) ) as TotalPrice from (select strtodate('2013-01-07' , '%Y-%m-%d') as thedate union all select strtodate('2013-01-08' , '%Y-%m-%d') as thedate ) dates left outer join ts_room_prices prices on dates.thedate between prices.season_start and prices.season_end and dayname(dates.thedate) = prices.dayofweek join ts_room prices def on def.season_name = 'default' and def.hotel = <whatever the hotel is> and def.dayofweek = dayname(dates.thedate)
注意,sum()表达式要简单得多,现在星期几在联接中。我还添加了获取默认值的酒店条件-这也应该在其他查询中。
sum()
请记住,您必须将所有日期与组合在一起放入初始子查询中union all。
union all