2015-12-13 33 views
1

我有一個模擬考試,其中一個問題是<>如何在SQL中工作?

哪個供應商名稱未發運紅色部分?

數據庫模式如下:

Supplier (SupplierName, City) 
Part(PartName, Color, Weight) 
Shipment(SupplierName, PartName, Date) 
Shipment(SupplierName) is a F.K. onto Supplier(SupplierName) 
Shipment(PartName) is a F.K. onto Part(PartName) 

查詢我想出了被

SELECT S.SupplierName 
FROM Supplier as S 
JOIN Shipment as SH on S.SupplierName = SH.SupplierName 
JOIN Part as P on SH.PartName = P.PartName 
WHERE P.Color <> 'Red' 

我的問題是,我使用<>的正確方法?

回答

2

不,您會發現供應商至少提供了一個不是紅色的零件。

即使在與非紅色部件相同的貨件中,他們也可能提供了紅色部件。

你可以使用

SELECT S.SupplierName 
FROM Supplier AS S 
WHERE NOT EXISTS (SELECT * 
        FROM Shipment AS SH 
          JOIN Part AS P 
          ON SH.PartName = P.PartName 
        WHERE S.SupplierName = SH.SupplierName 
          AND P.Color = 'Red') 
相關問題