下面的查询选择特定buildID的周(weekId)使用的所有部分(partId)和目录(catalogId)
- 每个构建都有一组目录和目录部分。
select bw.weekId, epl.catalogId, wep.logId, epl.id, wep.partId, c.catalogName, cp.partName
from engine.thisWeeksEngineParts wep
inner join engine.EnginePartsList epl ON wep.logId = epl.Id
inner join engine.buildWeek bw ON epl.weekId = bw.weekId
inner join engine.catalog c ON epl.catalogId = c.catalogId
inner join engine.catalogParts cp ON wep.partId = cp.partId
where bw.buildID = 1994334936
order by weekId, catalogId, partId
现在我想要一个反向查询,向我显示与上面查询相反的内容。因此,我不想选择一周使用的所有目录和部件作为buildID,而是希望看到每个目录中未用于buildID的所有部件。
所以我仍然希望看到目录,但我希望看到这些目录中所有未使用的部分。
我尝试在engine.catalogParts上使用右连接,但只返回相同数量的结果。
以下是catalog和catalogParts表的表定义:
CREATE TABLE [engine].[catalogParts](
[partId] [bigint] NOT NULL,
[catalogId] [bigint] NOT NULL,
[partName] [nvarchar](max) NOT NULL,
CONSTRAINT [pk_catalogParts] PRIMARY KEY CLUSTERED
CREATE TABLE [engine].[catalog](
[catalogId] [bigint] NOT NULL,
[buildId] [int] NULL,
[catalogName] [nvarchar](max) NOT NULL,
[discriminator] [char](3) NOT NULL
CONSTRAINT [pk_catalog] PRIMARY KEY CLUSTERED
示例数据:
这是一个示例,它使用我的第一个查询显示第101周中使用的目录中的3个不同部分:
weekId | catalogId | logId | id | partId | catalogName | partName
101 11 66 66 29 V6_Eng piston_01
101 11 66 66 40 V6_Eng ring_00a
101 11 66 66 77 V6_Eng valve_202194
我希望新查询显示的是第101周未使用的所有部分,所以像这样:
weekId | catalogId | logId | id | partId | catalogName | partName
101 11 66 66 29 V6_Eng manifold_upper_44
101 11 66 66 40 V6_Eng manifod_lower_44c
101 11 66 66 77 V6_Eng camshaft_229
谢谢!