我创建一个sql查询,当有任何汽车库存时,从dbo.car输出licensePlate。这意味着我必须在dbo.Sell和dbo下查看。确保汽车没有出售或租赁。
我需要输出以下内容:
LicensePlateNo
--------------
SGK5556A
但输出将始终为空白。 我有以下声明:
SELECT
LicensePlateNo
FROM car
INNER JOIN CarTransaction ON
car.ChassisNo = CarTransaction.ChassisNo
INNER JOIN Sell on
CarTransaction.TransactionID = Sell.TransactionID
INNER JOIN Rent on
CarTransaction.TransactionID = Rent.TransactionID
WHERE
Car.Make = 'Toyota' AND
Sell.TransactionID IN (SELECT TransactionID FROM Sell) AND
Rent.TransactionID IN (SELECT TransactionID FROM Rent)
我似乎无法获得正确的查询。查询有效的唯一时刻是我没有为dbo.Rent指定查询。但我需要验证是否通过租赁历史记录提供汽车
答案 0 :(得分:0)
如果您的汽车已售出且已租用,则此查询仅会产生结果。这就是INNER JOIN的用途 - 它们只在两个表中找到记录时给出结果。
我想你想要一个这样的SQL语句:
ListView
答案 1 :(得分:0)
不需要内部联接,并且汽车不会同时出售和出租,查询可以写成:
SELECT
LicensePlateNo
FROM
Car
INNER JOIN
CarTransaction
ON
Car.ChassisNo = CarTransaction.ChassisNo
WHERE
Car.Make = 'Toyota' AND
CarTransaction.TransactionID NOT IN (SELECT TransactionID FROM Sell) AND
CarTransaction.TransactionID NOT IN (SELECT TransactionID FROM Rent)
;