I am trying to create a query which returns from my database the available vehicles based on the from and to dates a user inputs.
This is currently the date within my booking table.
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
Below is my query, it works if i put a date that is not equal to a date which is already in the booking table. For example if i put the 22-JAN-13 to 27-JAN-13 those two cars in the above table will be omitted from the results cause they are booked. However if I put in 23-JAN-13 to 24-JAN-13, the car booked on this day will also be returned when it shouldn’t be because its booked.
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);
Because i am using <= and >= the equals part will cause it to omit them as they are equal, or am i wrong?
try this