[英]Get available room with rates between arrival and departure date
價格計划主表
CREATE TABLE `price_plan_master` (
`id` int(11) NOT NULL COMMENT 'Id ( Auto Increment )',
`room_id` int(11) NOT NULL COMMENT 'Room Id (Related to room_master table)',
`date` date NOT NULL COMMENT 'Date to get rate',
`no_of_rooms` int(11) NOT NULL COMMENT 'No of rooms available',
`rate` double NOT NULL COMMENT 'Room rate',
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Id|room_id|date|no_of_rooms|rate
1|2|2017-10-01|5|8530
2|2|2017-10-02|5|8530
3|3|2017-10-01|5|8200
4|3|2017-10-02|5|8200
5|2|2017-10-01|2|14609
6|2|2017-10-02|2|14609
7|3|2017-10-03|2|14609
8|2|2017-10-04|2|14609
9|3|2017-10-01|2|13000
10|3|2017-10-02|2|13000
11|3|2017-10-03|2|13000
12|3|2017-10-04|2|13000
13|6|2017-10-01|3|17286
14|6|2017-10-02|3|17286
15|6|2017-10-03|3|17286
16|6|2017-10-04|3|17286
17|11|2017-10-01|10|2830
18|11|2017-10-02|10|2830
19|11|2017-10-03|10|2830
20|11|2017-10-04|10|2830
21|12|2017-10-01|2|1700
我想獲取所有符合條件的房間,其可用性應等於或大於請求的入住日期和退房日期之間所請求的房間數量(即no_of_rooms> = 3)。 對於日期范圍之間的每個日期,應檢查房間的可用性。
目前,我正在使用以下查詢。
select * from price_plan_master
where date >= checkin and date <= checkout
我需要檢查所有日期的可用性。
誰能建議我在單個查詢中更改哪些內容以獲取記錄?
您可以使用添加了AND條件的查詢來使用:
select * from price_plan_master
where date >= checkin and date <= checkout
and no_of_rooms >= 3
這將選擇日期范圍內大於或等於請求的房間數的所有房間。
SELECT ppm。* FROM price_plan_master ppm INNER JOIN(SELECT room_id,COUNT(room_id)AS cnt,DATEDIFF(checkout,checkin)+1 AS TEMP FROM price_plan_master WHERE date
> = checkin AND date
<= checkout AND no_of_rooms> = 3 GROUP BY room_id正在cnt =溫度)t ON ppm.room_id = t.room_id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.