我正在编写酒店预订模块。现在我必须连接一个现有的应用程序,以获得给定日期范围内的可用房间。请帮助我。
我在这里发布现有应用程序的数据库架构(存储了房间和预订信息)。
间:
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个输入
我需要的是room_id
和max_qty_available
答案 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。