0

首先,我使用的是 SQL Server Management Studio。

我试过搜索,但找到正确的措辞可能是我失败的原因。

我正在尝试为我的 SQL 类开发一个查询,该查询返回ResellerName未售出 4 种产品中的 1 种的企业列表ProductCategoryKey

就像只列出不包括胡萝卜的食谱一样。

它需要我加入五个表才能链接ResellerNameProductCategory.

当前代码如下所示:

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 字段或其他内容。

任何帮助,将不胜感激。

4

1 回答 1

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
于 2013-08-01T05:23:54.203 回答