我有一个应用程序,允许用户预订一个娱乐设施。用户可以选择一个开始日期(05/05/2022)和结束日期(05/08/2022),然后数据通过数据库发送。
- 然而 *,**(问题)**我有一个用户想要预订同一设施。他们选择了开始日期(05/03/2022)和结束日期(05/06/2022)。我的目标是防止用户预订结束日期介于现有预订日期之间的设施。
**(ACHIEVED)**如果开始日期和结束日期介于现有预订日期之间,则通过禁用正在预订的所需设施,我已达到目标。我已执行以下SQL查询:
"SELECT * FROM reservations WHERE facility = :facility AND :begDate BETWEEN begDate AND endDate AND :endDate BETWEEN begDate AND endDate";
对于在查询中处理ISSUE以及处理ACHIEVED,有哪些建议?
1条答案
按热度按时间uoifb46i1#
我的目标是防止用户预订结束日期介于现有预订日期之间的设施。
您可以使用以下逻辑检查新保留是否与现有保留重叠:
给定设施和日期范围后,查询将检查是否已存在同一预订且时间范围重叠的预订。它将返回“违规”预订,如果不存在冲突,则不返回任何行。