【发布时间】:2014-02-16 02:40:10
【问题描述】:
SQL Server 2008 R2
这很难解释,但我不愿意提供实际细节,因为这是我雇主的项目。把一个场景放在一起:我们的数据库跟踪车轮、它们的规格以及它们何时被安装到汽车上。我需要为连接到具有所有车轮的汽车上的每个车轮提取记录。我的Cars 表中有一个字段告诉我该条目是什么类型的汽车,我的CarTypes 表中有一个条目告诉我每种类型的汽车有多少个轮子,我的WheelPositions 表中有一个条目用于汽车上每个可能放置车轮的位置。
我还需要生成第二个类似的查询,以返回缺少车轮的汽车列表。
目前,我的查询如下所示:
SELECT
Cars.ID AS [CarID]
,CarTypes.Name AS [CarType]
,Wheels.ID AS [WheelID]
,WheelPositions.[Index] AS [PosIndex]
FROM
Cars
LEFT JOIN CarTypes ON Cars.Type = CarTypes.Name
LEFT JOIN Wheels ON Cars.ID = Wheels.CarID
LEFT JOIN WheelPositions ON Wheels.Position = WheelPositions.Value
AND Wheels.Shop = WheelPositions.Shop
WHERE
Cars.Visible = 'True'
这给了我一个连接到汽车的所有车轮的列表,但我不知道如何修改它以过滤掉缺少车轮的汽车或在不完整的汽车上包括空置位置。
为了清楚起见,我正在描述两个单独的查询,并且正在寻求任何帮助。
【问题讨论】:
标签: sql sql-server