首先,我正在使用SQL Server Management Studio。
我尝试过搜索,但找到正确的措辞可能是我失败了。
我正在尝试为我的SQL类开发一个查询,该查询返回尚未销售4种类型产品ResellerName
中的1种的商家列表ProductCategoryKey
。
仅列出不包含胡萝卜的食谱。
要求我加入五个表格才能将ResellerName
与ProductCategory
相关联。
当前代码如下所示:
SELECT DISTINCT
r.ResellerName
FROM
(((DimReseller AS r
FULL OUTER JOIN FactResellerSales AS rs ON r.ResellerKey = rs.ResellerKey)
INNER JOIN DimProduct AS p ON rs.ProductKey = p.ProductKey)
INNER JOIN DimProductSubcategory AS psc ON p.ProductSubcategoryKey = psc.ProductSubcategoryKey)
INNER JOIN DimProductCategory AS pc ON psc.ProductCategoryKey = pc.ProductCategoryKey
ORDER BY r.ResellerName`
我很遗憾我的Where
条款应该包括哪些内容,只列出每个没有卖过自行车的公司。我唯一的想法是尝试将类别1字段设置为NULL字段或其他内容。
任何帮助都将不胜感激。
答案 0 :(得分:0)
重写它的最简单方法是使用LEFT JOIN
查找ProductCategoryKey上的任何匹配项,使用IS NULL
删除包含匹配项的行,例如;
SELECT DISTINCT r.ResellerName
FROM DimReseller AS r
LEFT JOIN FactResellerSales AS rs
ON r.ResellerKey = rs.ResellerKey)
LEFT JOIN DimProduct AS p
ON rs.ProductKey = p.ProductKey)
LEFT JOIN DimProductSubcategory AS psc
ON p.ProductSubcategoryKey = psc.ProductSubcategoryKey)
LEFT JOIN DimProductCategory AS pc
ON psc.ProductCategoryKey = pc.ProductCategoryKey
AND pc.ProductCategoryKey IN (1,2,3,4,5,6,7,8)
WHERE pc.ProductCategoryKey IS NULL
ORDER BY r.ResellerName