0

我有这张桌子

**Rooms** 
idRoom
name

**Room_details**
idRoomDetails
idRoom
idRoomType

**Bookings**
idBooking
idRoomDetails
startDate
endDate

有*的词 * 是表名

我拥有的变量是 idRoomType、startDate、endDate。

如何输出所有可用的房间以及给定的参数是room type, startDateendDate

老实说,我现在不知道如何开始,这就是为什么我不能向你展示我到目前为止所做的事情。

对你的帮助表示感谢!谢谢!:)

4

2 回答 2

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' 当然需要用实际日期替换。

于 2013-07-29T15:02:10.687 回答
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 > CURDATE() 应该只检查那些将来有预订的房间。您可能想先尝试不使用此行的查询,看看它是否有效。如果它确实有效,那么您始终可以在查询中添加日期检查部分。

于 2013-07-29T14:55:26.510 回答