需要不同连接的三个表的SQL查询

时间:2012-02-08 12:11:01

标签: sql

我有3张桌子。应用程序(相关字段是App​​ID)表包含有关可供下载的各种应用程序的信息,包含可用于各种可下载项目的信息的Packages表(相关字段是PackageID)以及App / Packages表(相关字段是App​​ID和PackageID)显示每个应用程序应下载哪些软件包。我需要一个查询来找出哪些包与特定应用程序无关。

我的想法是INNER JOIN应用程序到AppPackages以获取与应用程序相关的所有包的列表,然后OUTER JOIN将此结果集添加到Packages并找到所有空结果以显示哪些包不相关。< / p>

问题是我似乎无法弄清楚如何链接这些查询。子查询似乎不起作用,EXIST / NOT EXIST需要来自外部查询的信息,我无法使其工作。我假设我有一些简单的东西,但我读到的所有文献都是两张桌子,不超过两张。

这是我最好的尝试,但由于上述原因,EXISTS部分无效。

SELECT Packages.PackageID FROM Packages WHERE NOT EXISTS
(Select AppPackages.PackageID, AppPackages.AppID FROM AppPackages WHERE AppPackages.AppID = @AppID)

提前感谢您的任何帮助:)

干杯,

马特:)

2 个答案:

答案 0 :(得分:1)

  

我需要一个查询来找出哪些软件包与特定应用程序无关。

SELECT
  *
FROM
  Packages p
WHERE
  NOT EXISTS (
    SELECT 1 
      FROM Applications a 
           INNER JOIN AppPackages ap ON ap.PackageId = p.PackageId
     WHERE ap.AppId = <Your App ID>
  )

答案 1 :(得分:0)

我会尝试这样:

SELECT Packages.PackageID FROM Packages WHERE Packages.PackageID NOT IN
(Select AppPackages.PackageID FROM AppPackages WHERE AppPackages.AppID = @AppID)