我有3個表。包含可供下載的各種應用程序的信息的應用程序(相關字段是AppID)表,包含可用各種可下載項目的信息的軟件包表(相關字段爲PackageID)和App/Packages表(相關字段是AppID和PackageID)顯示應爲每個應用程序下載哪些軟件包。我需要一個查詢來找出哪些軟件包與特定應用程序無關。需要不同連接的三個表的SQL查詢
我的想法是INNER JOIN應用程序到AppPackages以獲得與應用程序相關的所有包列表,然後將此結果集OUTER JOIN加入到包並找到所有空結果以顯示哪些包不相關。
問題是我似乎無法解決如何鏈接這些查詢。子查詢似乎不起作用,並且EXIST/NOT EXIST需要來自外部查詢的信息,這是我無法工作的。我假設我有一些簡單的東西,但是我讀到的所有文獻都是兩張表,不超過兩張。
這是我的最佳嘗試,但EXISTS部分因上述原因不起作用。
SELECT Packages.PackageID FROM Packages WHERE NOT EXISTS
(Select AppPackages.PackageID, AppPackages.AppID FROM AppPackages WHERE AppPackages.AppID = @AppID)
預先感謝任何幫助:)
乾杯,
馬特:)
這樣做的工作完全(也似乎到目前爲止有限的測試),非常感謝!我以前從來沒有見過SELECT 1 ..我必須瞭解它是如何工作的。 – 2012-02-08 13:52:17
@Matty W:'SELECT 1'只是'SELECT *'的另一種形式。這是一種更明確的說法,即你不需要返回任何列。 – Tomalak 2012-02-08 14:17:41
好的,所以我試圖在我的asp.net網站中使用這個查詢的輸出,但是看起來4列中的每一列的列名是相同的... PackageID。這是預期的嗎? – 2012-02-09 09:53:49