我目前正在建立一个酒店预订系统,并想知道如何查询我的tbl_prices表中的价格列。
以下是我的表格的样子:
id date_from date_to price is_default
1 00-00-0000 00-00-0000 $95 1
2 05-25-2012 05-29-2012 $100 0
3 06-20-2012 06-24-2012 $90 0
第一行是默认价格。因此,如果有人保留不在第2行和第3行的日期,则价格为95美元。但如果预订日期落在第2和第3行,则价格应为100美元或90美元。
如果客人想要在2012年5月24日至5月26日期间办理登机手续,那么价格应为
第1天= 95美元 第二天= 100美元
2012年5月26日将不收取费用,因为这是结帐日期。
答案 0 :(得分:0)
一个非常直接的解决方案是:
$from = 5-24-2012
和$till = 5-26-2012
select price, date_to from my_table where date_from <= $from
ORDER BY date_from ASC LIMIT 1
然后,您可以在date_to(由此查询接收)和$ till。
之间进行检查if($till <= $date_to) {
// total cost is price * no. of days of stay
}
else {
// repeat above query, this time with date_to parameter in where clause
// total cost is price1 * no. of days in 1st range + .....
}
答案 1 :(得分:0)
如果您每天查询一次,则只有一个默认值且价格没有重叠期间:
SELECT price FROM tbl_prices
WHERE ($input_date >= date_from AND $input_date <= date_to)
OR is_default = 1
ORDER BY is_default
LIMIT 1