1

systemSoftwareテーブルとソフトウェアテーブルを調べてsoftwareId、テーブル内にないものだけを表示する必要がある単純なクエリsystemSoftware

これが私のこれまでの質問です...

SELECT s.softwareId AS 'Software ID',
    s.softwareDescription AS 'Software Description',
    sv.vendorName AS 'Vendor Name',
    c.cityName AS 'City Name'
FROM software AS s
JOIN systemSoftware AS ss
ON s.softwareId = ss.softwareId
JOIN softwareVendor AS sv
ON s.vendorId = sv.vendorId
JOIN city AS c
ON sv.zipCode = c.zipCode
WHERE s.softwareId NOT IN (ss.softwareId)
ORDER BY s.softwareId
GO

NOTを削除すると、にあるすべてのsoftwareId行が表示されますsystemSoftware

問題は私が反対を望んでいることです。にないものsystemSoftware

4

1 に答える 1

2

左外部結合が必要です。

SELECT ss.softwareId AS 'Software ID',
    s.softwareDescription AS 'Software Description',
    sv.vendorName AS 'Vendor Name',
    c.cityName AS 'City Name'
FROM software AS s
left outer JOIN systemSoftware AS ss
ON s.softwareId = ss.softwareId
left outer JOIN softwareVendor AS sv
ON s.vendorId = sv.vendorId
left outer JOIN city AS c
ON sv.zipCode = c.zipCode
WHERE ss.softwareId is NULL
ORDER BY s.softwareId

ORDER BY存在しない列で注文するのは意味がないので、も変更しました。

于 2012-11-27T07:16:20.487 に答える