我有一个酒店房间预订申请,主要是基于下表。
我的预订桌,
`id`
`category`
`booking_no`
`room_id`
`date`
`guest_id`
`status`
我的房间table
`id`
`room_type_id`
`room_no`
`booking_no`
`blocked_from`
`blocked_to`
`status`
我的房间和table
`id`
`category`
`name`
`status`
我的支票表
`id`
`booking_no`
`room_id`
`guest_id`
`date`
`inout_status`
`status`
我目前正在使用下面的查询获取可以添加预订的可用房间。这个查询非常有效,我可以得到我想要的。
$query = "
SELECT r.room_type_id
, r.id room_id
, r.room_no
, t.name room_type_name
FROM rooms r
JOIN room_types t
ON t.id = r.room_type_id
WHERE r.id NOT IN
( SELECT room_id
FROM reservations
WHERE (date >='$checkin'
AND date <'$checkout')
AND category = 'Accommodation'
AND status=1)
AND t.category = 'Accommodation'
AND r.status <> 7
AND (r.blocked_from > '$checkout'
OR r.blocked_to < '$checkin'
OR r.blocked_to IS NULL
OR r.blocked_from IS NULL)
ORDER
BY r.room_type_id
, r.room_no ASC
";
另外,当客人入住房间时,我会将状态插入表check\u inout,状态1表示inout\u status feild。当他退房的时候,我插入了状态2的inout\u状态字段。另外,我在登记入住时更新房间表中特定房间的预订号码,然后在结账时将其删除。
问题是:如果一位客人预订了一天的房间,并且他在同一天退房(例如:一位客人在下午1:00到下午6:00退房),那么这个房间必须可以让另一位客人入住。
不幸的是,我不能得到它使用我的表结构上面。因为我正在使用上面的查询根据预订表检查可用性。
如果有人能通过链接check\inout表找到它的方法,那就帮个忙,因为它有所有房间的check&checkout记录。
我在这儿摆弄http://sqlfiddle.com/#!9/e4747/2号
结果我也想得到204房间,但我不知道怎么得到。
暂无答案!
目前还没有任何答案,快来回答吧!