简体   繁体   English

如何计算5天(mysql)酒店预订系统的总价

[英]how can calculate the total price for 5 days (mysql ) hotel booking system

I have this table for the price of rooms with diffrent season ( high , low ) season 我有这张桌子的价格与不同季节(高,低)季节的房间

how can get total price for 5 days with diffrent days and diffrent season .. 如何在不同的日子和不同的季节获得5天的总价格..

look at this table 看看这张桌子

在此输入图像描述

this is my command ( mysql ) I want to get the total price for 10 nights from 04-07-2013 to 11-07-2013 这是我的命令(mysql)我想从2013年7月4日2013年7月11日获得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'


addition 加成

I wrote this command but still dosen't work 我写了这个命令,但仍然没有工作

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)

Error: #1305 - FUNCTION saudihot_saudihotels.strtodate does not exist 错误:#1305 - 功能saudihot_saudihotels.strtodate不存在

Here is the query: 这是查询:

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)

Notice that the sum() expression is much simpler and the day of week is now in the joins. 请注意, sum()表达式更简单,并且星期几现在在连接中。 I also added the hotel condition for getting the default values -- this should be in the other query as well. 我还添加了获取默认值的酒店条件 - 这也应该在其他查询中。

Remember that you have to put all the dates in the initial subquery, combined with union all . 请记住,您必须将所有日期放在初始子查询中,并与union all结合使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM