【发布时间】:2015-03-23 14:44:39
【问题描述】:
我有以下表格:
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、Arrival Date = 24/03/2015、Departure Date = 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。
我需要这方面的帮助,每次我发布关于此的问题时,我都没有得到答案或某种形式的帮助。到目前为止,我已经完成了这个酒店系统的设计,我现在希望能够完成它。
请帮助我,我敢肯定有时你也遇到过同样的情况需要帮助。
【问题讨论】:
-
听起来你想要某种
LEFT JOIN以便它返回结果,但你也可以有条件地判断它们是否已被预订。 -
您不需要在查询中添加日期吗?
-
如果我在数据库中查询房间可用性,我会坚持使用房间表和预订表吗?还是我需要查询 Rooms_booked 表?
-
您使用的是哪个 DBMS?后格雷斯?甲骨文?
标签: sql sql-server