我有这张桌子
**Rooms**
idRoom
name
**Room_details**
idRoomDetails
idRoom
idRoomType
**Bookings**
idBooking
idRoomDetails
startDate
endDate
包含* *的字词是表格名称
我拥有的变量是idRoomType,startDate,endDate。
如何输出所有可用的房间,并且给定的参数为room type,
startDate
和endDate
?
老实说,我现在不知道如何开始这就是为什么我不能告诉你到目前为止我做了什么。
非常感谢您的帮助!谢谢! :)
答案 0 :(得分:1)
如果日期选择是您的问题,那么我可以为您提供一些有用的见解。您应该在查询结构中选择具有以下条件的所有房间;
Booking.startDate <= "End date of the availability period you're checking"
Booking.endDate >= "Start date of the availability period you're checking"
为了更清楚,您的查询可能如下所示:
SELECT * FROM Rooms
INNER JOIN Room_details ON Rooms.idRoom = Room_details.idRoom
LEFT JOIN Bookings ON Room_details.idRoomDetails = Bookings.idRoomDetails
WHERE Bookings.idBooking IS NULL
OR (Bookings.startDate <= 'availabilityEndDate'
AND Bookings.endDate >= 'availabilityStartDate')
其中'availabilityEndDate'和'availabilityStartDate'当然需要用实际日期替换。
答案 1 :(得分:0)
你可以尝试这个查询:
select * from Rooms r
inner join Room_details rd on
r.idRoom = rd.idRoom
left join Bookings b on
rd.idRoomDetails = b.idRoomDetails
where b.idBooking is null
and b.startDate > CURDATE()
和b.startDate&gt; CURDATE()应仅检查将来有预订的房间。您可能希望首先尝试不使用此行的查询,看看它是否有效。如果它确实有效,那么您始终可以在查询中添加日期检查部分。