我有一個允許用戶預訂娛樂設施的應用程式。用戶可以選擇開始日期 (05/05/2022) 和結束日期 (05/08/2022),然后通過資料庫發送資料。
但是,(問題)我有一個用戶想要預訂相同的設施。他們選擇開始日期 (05/03/2022) 和結束日期 (05/06/2022)。我的目標是防止用戶預訂結束日期介于現有預訂日期之間的設施。
(已實作)如果開始日期和結束日期在現有預訂日期之間,我已經通過禁用正在預訂的所需設施來實作。我做了一個 SQL 查詢:
"SELECT * FROM reservations WHERE facility = :facility AND :begDate BETWEEN begDate AND endDate AND :endDate BETWEEN begDate AND endDate";
在處理查詢中的ACHIEVED的同時處理ISSUE有哪些建議?
uj5u.com熱心網友回復:
我的目標是防止用戶預訂結束日期介于現有預訂日期之間的設施。
您可以使用以下邏輯檢查新預訂是否會與現有預訂重疊:
SELECT *
FROM reservations
WHERE facility = :facility AND :begDate <= endDate AND :endDate >= begDate
給定一個設施和一個日期范圍,該查詢將檢查同一預訂是否已存在且時間范圍重疊。它回傳“有問題的”保留,如果沒有沖突,則不回傳任何行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/534365.html
上一篇:查詢拋出“java:annotationvaluesmustbeoftheform'name=value'錯誤
下一篇:回傳從未相互交手過的球隊-SQL
