我试图找出哪一个(如果有的话)车辆在一对用户输入变量之间是空闲的。
用于旅行的每辆车在行中开始和结束时都有行程开始和结束的时间,因此车辆不可用。
到目前为止,我几乎得到了每个列出的注册,而不是任何类型的过滤结果。
SELECT vehicle_registration FROM
(select vehicle_registration
FROM trips
WHERE departure
not BETWEEN :departure AND :return
and return
not BETWEEN :departure AND :return)
group by vehicle_registration
有什么线索我还缺少吗?
答案 0 :(得分:1)
像这样的东西,虽然我可能有> =混合了。假设车辆表和vehicle_id是主键/外键:
此方法的另一个好处是可以显示尚未预订旅行的车辆。
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
)
答案 1 :(得分:1)
您正在使用AND,这意味着两个条件都必须为真。您需要使用OR代替:
select vehicle_registration
from trips
where departure not between :departure and :return
or return not between :departure and :return
如果没有,如语法高亮显示,return
是列名中的错误的名称。这是Oracle中的保留字,如果可以,你应该避免使用它。