我正在学习SQL,并且我已经编写了一个返回所有Fords所有者的查询。如何修改查询,使其不返回拥有福特和法拉利的任何人?
SELECT DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ford' 添加:
我尝试了下面的代码,看看是否可以生成不拥有Ferarris的人,但它生成了一个空白数据表。你知道它出什么问题了吗?
SELECT DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE NOT EXISTS
(SELECT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ferarri' )发布于 2010-09-24 17:52:52
SELECT
FORDOWNERS.PID
FROM
(SELECT DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ford') AS FORDOWNERS
INNER JOIN
(SELECT DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ferrari') AS FERRARIOWNERS
ON FORDOWNERS.PID = FERRARIOWNERS.PID或者像这样
SELECT
OWNS.PID
FROM
Person INNER JOIN Owns ON Person.Pid= Owns.Pid INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ford'
AND OWNS.PID IN (SELECT DISTINCT Owns.Pid
FROM (Person INNER JOIN Owns ON Person.Pid= Owns.Pid) INNER JOIN Car ON Owns.Cid=Car.Cid
WHERE Car.Manufacturer = 'Ferrari')发布于 2010-09-24 17:25:52
由于这是标记为家庭作业,这里有一些提示:
https://stackoverflow.com/questions/3785715
复制相似问题