特定の車が指定された期間に予約されているかどうかを確認するクエリを作成するのに問題があります。私のテーブルは と呼ばれBookings
、CarID
、StartDate
およびEndDate
列があります。ユーザーが入力した期間に車が予約されている場合、行を返したいです。現時点では、インターネットといくつかのいじりから得た次のクエリがあります。
SELECT *
FROM Bookings
WHERE BookingID NOT IN
(SELECT BookingID
FROM Bookings
WHERE
(StartDate <= user_start_date AND EndDate >= user_start_date) OR
(StartDate <= user_end_date AND EndDate >= user_end_date) OR
(StartDate >= user_start_date AND EndDate <= user_end_date)) AND
(CarID = 7)
ここではuser_start_date
、ユーザーからの開始日、ユーザーuser_end_date
からの終了日、および7
車の日付として を使用しています。ただし、ロジックは機能していないようです。日付にまったく衝突がないことを確認しても、常に行が返されます。
このクエリが機能するように修正するにはどうすればよいですか?
ありがとう