查看 SQL 的空房情况
Checking room availability in SQL
我为酒店预订系统创建的关系数据库模式有 4 个表:
客户 Table -
CustomerID (PK)
title
firstname
surname
address
town
county
country
postcode
tel
email
username
password
房间Table
RoomID (PK)
RoomType
Description
PricePerNight
预订
ReservationID (PK)
CustomerID (FK)
RoomID (FK)
ArrivalDate
DepartureDate
Room_Availability
RoomID(PK/FK)
Availability
在前端我有两个 ajax 日历,允许用户 select 到达和离开日期,旁边有一个检查可用性按钮。
我不确定我将如何搜索数据库以检查哪些房间可用,然后将它们显示在下一页上,例如网格视图或其他东西。
此外,我的数据库模式是否正确,有人可以帮助我吗?
正如 gitsitgo 所说,你的问题太宽泛,无法完整回答。但是让我们把它减少一点。首先,我假设一个房间可能有两个原因无法使用:一是它正在修理或其他什么,二是它已经被预订了。如果是这样,您的架构看起来没问题。
因此,要检查可用性,您需要获取用户提供的开始日期和结束日期,并找到用户提供的两个日期之间任何一天都可用且未预订的所有房间.
执行此操作的逻辑是 select 所有不符合以下任何条件的房间 ID:
- 开始日期介于预订开始日期和预订结束日期之间,包括首尾日期。
- 结束日期介于预订开始日期和预订结束日期之间(含首尾日期)。
- 开始日期小于预订开始日期,结束日期大于预订结束日期。
- 房间 ID 在可用性中被标记为不可用 table。
为此,查找并应用 EXISTS 或 IN。 (您还需要查找 BETWEEN。)在您弄清楚要显示的内容之前,不要在网格中显示它。
我为酒店预订系统创建的关系数据库模式有 4 个表:
客户 Table -
CustomerID (PK)
title
firstname
surname
address
town
county
country
postcode
tel
email
username
password
房间Table
RoomID (PK)
RoomType
Description
PricePerNight
预订
ReservationID (PK)
CustomerID (FK)
RoomID (FK)
ArrivalDate
DepartureDate
Room_Availability
RoomID(PK/FK)
Availability
在前端我有两个 ajax 日历,允许用户 select 到达和离开日期,旁边有一个检查可用性按钮。
我不确定我将如何搜索数据库以检查哪些房间可用,然后将它们显示在下一页上,例如网格视图或其他东西。
此外,我的数据库模式是否正确,有人可以帮助我吗?
正如 gitsitgo 所说,你的问题太宽泛,无法完整回答。但是让我们把它减少一点。首先,我假设一个房间可能有两个原因无法使用:一是它正在修理或其他什么,二是它已经被预订了。如果是这样,您的架构看起来没问题。
因此,要检查可用性,您需要获取用户提供的开始日期和结束日期,并找到用户提供的两个日期之间任何一天都可用且未预订的所有房间.
执行此操作的逻辑是 select 所有不符合以下任何条件的房间 ID:
- 开始日期介于预订开始日期和预订结束日期之间,包括首尾日期。
- 结束日期介于预订开始日期和预订结束日期之间(含首尾日期)。
- 开始日期小于预订开始日期,结束日期大于预订结束日期。
- 房间 ID 在可用性中被标记为不可用 table。
为此,查找并应用 EXISTS 或 IN。 (您还需要查找 BETWEEN。)在您弄清楚要显示的内容之前,不要在网格中显示它。