我有一个租车项目,当从数据库表CAR中租用car ID
作为主键的可用车时,我将数据插入表RESERVATION
中,其中reservation ID
作为主键,并且{ {1}}作为car ID
表中的外键。
但是,我不希望我刚租出的汽车显示为“可用的汽车”来出租。我应该写什么查询才能隐藏它?
car
答案 0 :(得分:5)
您无需更新任何表格即可隐藏汽车。
在选择要显示的可用汽车列表时,请使用以下SQL:
SELECT * FROM Car WHERE CarID NOT IN (SELECT CarID FROM Reservation)
这将排除所有已预订的汽车。无论如何,这是基本思想。
预订可能仅在特定时期内有效,并且用户可能试图保留不同的时期,因此您可能需要更复杂的东西,例如:
SELECT * FROM Car WHERE CarID NOT IN
(
SELECT CarID
FROM Reservation
WHERE StartDate < @DesiredEndDate
AND EndDate > @DesiredStartDate
)
这将提供未出现在预订中且与用户期望的预订时间重叠的汽车列表。
答案 1 :(得分:0)
您可以将联接查询编写为:
Select C.carID
from @Car C
Left join @Reservation R on C.carID = R.carID
where R.reservationID is null