大家好我试图在我设置的数据库上运行查询时遇到问题。我正在建立一个汽车租赁数据库,我正在尝试运行一个查询,以查看哪个车辆可以在两个日期之间租用。我有两个表参与查询车辆预订和车辆数据库。当我运行查询时,我可以看到哪辆车可用,但它只显示有关预订数据库的结果。 (也显示重复的值)有没有一种方法可以传递数据,以显示基于车辆表中所有车辆的结果。对不起,如果这有点混乱任何提示非常感谢。
SELECT Vehicles.[Vehicle ID]
,Vehicles.Make
,Vehicles.Model
,Vehicles.[Type of Vehicle]
,Vehicles.Year
,Vehicles.Colour
,Vehicles.[Price/ Per Day]
,Vehicles.[Out of Service]
,Booking.End_Rent_Date
,Booking.Start_Rent_Date
FROM Vehicles
INNER JOIN Booking
ON Vehicles.[Vehicle ID] = Booking.[Vehicle ID]
WHERE End_Rent_Date < [enter start date]
OR [enter end date] < Start_Rent_Date;
SELECT *
FROM Vehicles
WHERE Vehicles.vehicle_id NOT IN (
SELECT Vehicle.vehicle_id
FROM Booking
WHERE (
start_date BETWEEN booking.enter_start_date
AND booking.enter_end_date
)
OR (
end_date BETWEEN booking.enter_start_date
AND booking.enter_end_date
)
)
您必须获取在这些日期之间租用的汽车组并将其从查询中排除,这就是您使用not in
的原因。
查询是正确的,您只需要编辑开始/结束日期部分。
- 显示所有可用的车辆:
SELECT *
FROM vehicles x1
WHERE x1.vehicle_id NOT IN
(
SELECT vehicle_id
FROM booking x2
WHERE (
enter_start_date BETWEEN x2.start_rent_date AND
x2.end_rent_date)
OR (
enter_end_date BETWEEN x2.start_rent_date AND
x2.end_rent_date)