我正在尝试返回一个车辆列表,我知道它们尚未在当前日期范围内预订。我有一个tblVehicles表:
ID Name
1 BMW
2 Merc
3 Land Rover
4 Hummer
5 Convertable
我还有一张表(tblDiary),其中包含车辆使用的所有日期:
ID VehicleId startDate endDate
1 1 2016-06-20 2016-06-22
2 1 2016-06-24 2016-06-24
3 2 2016-05-01 2016-06-05
所以我正在尝试编写一个查询,我想找到2016-06-21和2016之间可用的车辆。 2016年6月23日。因此,在这种情况下,期望的结果将是:
ID Name
2 Merc
3 Land Rover
4 Hummer
5 Convertable
最有效的方法是什么?
答案 0 :(得分:1)
SELECT *
FROM tblVehicles v
WHERE NOT EXISTS
(
SELECT NULL
FROM tblDiary d
WHERE d.vehicleId = v.id
AND endDate >= '2016-06-21'
AND startDate <= '2016-06-23'
)