问题描述
|
我需要一种查看超额预订的给定资源(在本例中为房间/床)的方法。这是我的表格结构。抱歉,匈牙利符号:
房间
--RoomID
预订
--BookingID
--BeginDate
- 结束日期
--AssignedRoomID(外键)
我没有任何无法正常运行的SQL,因为我真的不知道从哪里开始。我正在使用MS Access,但如果可能的话,我正在寻找与数据库无关的解决方案。不必更改某些关键字以匹配给定SQL引擎的方言就可以了,但是我想避免使用专有的或仅在一个RDBMS中可用的其他功能。
我意识到最好从一开始就避免预订过多,但这不是这个问题的重点。
如果有帮助,我几天前发布了一个相关问题,关于如何查找给定数据范围内尚未预订的资源。您可以在这里看到该问题。
编辑1:
为了回答下面的答案,我对SQL进行了一些修改,以使其可以在Access中使用,并且在检测冲突时更加准确。如果我没有答应,下面发布的解决方案不会引起一些冲突,但是当给定的Booking's EndDate和另一个Booking \ BeginDate落在同一天时,这也会显示冲突,这实际上是允许的,不应显示为冲突。我是否正确理解这一点,或者我在这里缺少什么?
SELECT
*
FROM
tblBooking AS booking
INNER JOIN
tblBooking AS conflict
ON [conflict].AssignedRoomID = [booking].AssignedRoomID
AND (([conflict].BeginDate >= DateAdd(\"d\",-1,[booking].BeginDate) AND [conflict].BeginDate < [booking].EndDate)
OR ([conflict].EndDate > [booking].BeginDate AND [conflict].EndDate < [booking].EndDate))
AND [conflict].BookingID <> [booking].BookingID
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)