mysql相关表中的酒店客房可用性

plupiseo  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(186)

我有一个酒店房间预订申请,主要是基于下表。
我的预订桌,

`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房间,但我不知道怎么得到。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题