I\'m trying to find out which, if any, vehicles are free between a pair of user input variables as dates.
Each vehicle, which is being used for a trip, has a start and e
Something like this, although I may have got the >= mixed up. Assuming a vehicle table and vehicle_id being the primary key/foreign key:
This method has the added benefit of showing vehicles that haven't yet been booked for a trip.
Select
v.*
From
vehicle v
Where
Not Exists (
Select
'x'
From
trips r
Where
r.vehicle_id = v.vehicle_id and
:return >= r.departure and
:departure <= r.return
)
You're using AND, which implies both conditions have to be true. You need to use OR instead:
select vehicle_registration
from trips
where departure not between :departure and :return
or return not between :departure and :return
On a side not, as indicated by the syntax highlighting, return
is a bad name from a column name. It's a reserved word in Oracle and you should avoid it if you can.