gpt4 book ai didi

用于搜索房间可用性的 SQL 查询

转载 作者:行者123 更新时间:2023-12-05 01:24:01 29 4
gpt4 key购买 nike

我的下表是:

 CUSTOMERS (CustomerID, firstname, surname etc)
ROOMS (RoomID, RoomType, Description)
BOOKING (BookingID, CustomerID, Arrival Date, Departure Date, number of people, total cost)
ROOMS_BOOKED (BookingID, RoomID)

用户输入两个日期到达和离开。然后检查房间的可用性。目前有一个房间被我自己插入到数据库中。因此,BOOKING 表现在包含 BookingID = 1、CustomerID = 1、到达日期 = 24/03/2015、出发日期 = 26/03/2015、人数 = 1、总成本 = 40.00。然后在 ROOMS_BOOKED 表中,我有 BookingID = 1 和 RoomID = 2,这是一个标准房间。

我正在使用这个 sql 代码 -
   SELECT RoomType FROM ROOMS WHERE RoomID NOT IN (SELECT RoomID FROM ROOMS_BOOKED) 

此查询返回尚未预订但不是我要查找的房间。例如,用户选择在数据库中预订的相同日期。因此,我希望能够在下一页显示所有房间类型,并为在所选日期预订的特定房间类型显示 x 或其他内容,类似于 www.galgorm.com。

我需要这方面的帮助,每次我发布有关此的问题时,我都没有得到答案或某种形式的帮助。到目前为止,我已经完成了这个带有设计的酒店系统,我现在希望能够完成它。

请帮助我,我确定有时您也遇到过同样的情况需要帮助。

最佳答案

您有以下情况

The user's selected period:
--------[---------]-------
Booking no1
[-----]-------------------
Booking no2
--------------------[----]
Booking no3
-----[----]---------------
Booking no4
-----------[---]----------
Booking no5
------[-------]-----------
Booking no6
--------------[--------]--
Booking no7
-----[----------------]---

您将必须找到哪些时期交叉。
显然情况 1 和 2 是免费的。
案例 3、5、6 很容易捕捉,因为您可以搜索预订的开始日期或预订的结束日期是否在用户的选择范围内。
在案例 4 和案例 7 中,您需要找出用户的选择日期是否在两次预订之间。

因此,以下查找空闲房间:
DECLARE @ArrivalDate AS DATETIME
DECLARE @DepartureDate AS DATETIME

SELECT RoomType
FROM ROOMS
WHERE RoomID NOT IN
(
SELECT RoomID
FROM BOOKING B
JOIN ROOMS_BOOKED RB
ON B.BookingID = RB.BookingID
WHERE (ArrivalDate <= @ArrivalDate AND DepartureDate >= @ArrivalDate) -- cases 3,5,7
OR (ArrivalDate < @DepartureDate AND DepartureDate >= @DepartureDate ) --cases 6,6
OR (@ArrivalDate <= ArrivalDate AND @DepartureDate >= ArrivalDate) --case 4
)

关于用于搜索房间可用性的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29213183/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com