0

特定の車が指定された期間に予約されているかどうかを確認するクエリを作成するのに問題があります。私のテーブルは と呼ばれBookingsCarIDStartDateおよび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車の日付として を使用しています。ただし、ロジックは機能していないようです。日付にまったく衝突がないことを確認しても、常に行が返されます。

このクエリが機能するように修正するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

日付を null にすることはできず、開始日が終了日より前であると仮定すると、次のクエリは、指定された日付範囲と重複する 7 号車の予約を一覧表示する必要があります。

SELECT *
FROM Bookings
WHERE CarID = 7
AND StartDate < user_end_date
AND EndDate > user_start_date
于 2013-04-11T13:39:27.137 に答える