在预订中搜索房间可用性[PHP / MySQL]

时间:2010-10-05 15:58:37

标签: php mysql

我正在编写酒店预订模块。现在我必须连接一个现有的应用程序,以获得给定日期范围内的可用房间。请帮助我。

我在这里发布现有应用程序的数据库架构(存储了房间和预订信息)。

间:

id
room_type
room_count
people
hotel_id

预定:

id
from
to
name
email
people
dt
hotel_id

bookings_rooms

booking_id
room_id
quantity

我将提供3个输入

  1. 酒店ID
  2. 从日期
  3. 至今
  4. 我需要的是room_idmax_qty_available

    的列表

2 个答案:

答案 0 :(得分:1)

所以,房间实际上不是房间,它们是一种有计数的类型。确定一些事情,虽然房间不是单独的实体,但很难阻止房间的变更。

SELECT r.id, r.room_count  - SUM(br.quantity ) AS max_qty_available
FROM rooms r
LEFT JOIN bookings b
ON b.hotel_id = r.hotel_id
    AND b.from < <Date END>
    AND b.to   > <Date START>         
LEFT JOIN booking_rooms br
ON br.room_id = r.id 
    AND br.booking_id = br.id
WHERE r.hotel_id = <Hotel ID>

答案 1 :(得分:0)

我猜测这些参数是什么,但在这里:

选择id为room_id,room_Count为max_qty_available从Rooms Where id不在(选择room_id来自预订_rooms预订_id 在(选择ID来自预订从&gt; = @ FromDate到&lt; = @ ToDate和hotel_id = @ HotelID) )和hotel_id = @HotelID

如果存在性能问题,您可以将IN和NOT IN替换为Exists而不存在。但不确定mysql是否支持Exists。