ユーザーが入力した開始日と終了日に基づいて、データベースから利用可能な車両を返すクエリを作成しようとしています。
これは現在、私の予約テーブル内の日付です。
Booking Table
booking_id customer_id reg_number date_from date_to status
1 2 RH34 TJT 23-JAN-13 24-JAN-13 1
2 3 RJ54 FKF 26-JAN-13 26-JAN-13 1
以下は私のクエリです。すでに予約テーブルにある日付と等しくない日付を入力すると機能します。たとえば、上記の表の 2 台の車に22-JAN-13
を27-JAN-13
入力すると、それらが予約されているため、結果から除外されます。しかし、 に入れたら、この日に予約23-JAN-13
し24-JAN-13
た車も、予約していたはずなのに返ってきてしまいます。
SELECT *
FROM vehicles
INNER JOIN car_model ON vehicles.model_code = car_model.model_code
INNER JOIN manufacture ON car_model.manufacture_code = manufacture.manufacture_code
LEFT OUTER JOIN booking ON vehicles.reg_number = booking.reg_number
WHERE ((booking.date_from <= '23-JAN-13' OR booking.date_from >= '24-JAN-13')
AND (booking.date_to <= '23-JAN-13' OR booking.date_to >= '24-JAN-13')
AND booking.booking_status = 1);
私は <= と >= を使用しているため、等しい部分は等しいのでそれらを省略しますか、それとも間違っていますか?