【发布时间】:2017-08-29 19:39:58
【问题描述】:
如果之前有人问过这个问题,请提前道歉,但我看到的大多数类似示例只涉及 2 张桌子,我很难适应我的情况。
我有一个查询要从表 ProductList 中选择 Product Number 和 Unit Of Measure 不在另一个表中,价格文件:
SELECT DISTINCT Prod_Num, [PriceFile].UM FROM [dbo].[PriceFile]
LEFT JOIN [dbo].[ProductList]
ON [PriceFile].Prod_Num = [ProductList].Product
WHERE [ProductList].Product IS NULL
使用表中当前的数据,这为我提供了以下信息:
Prod_Num UM
13717 HC
我现在需要使用此查询的结果来查询第三个表 Products,我尝试这样做:
SELECT DISTINCT ProductID AS proCode,Prod_Desc AS proName,
UPC_Code AS proBarCode,UM_SOLDBY AS untCode
FROM [dbo].[Products]
WHERE ProductID IN
(
SELECT DISTINCT Prod_Num, [PriceFile].UM FROM [dbo].[PriceFile]
LEFT JOIN [dbo].[ProductList]
ON [PriceFile].Prod_Num = [ProductList].Product
WHERE [ProductList].Product IS NULL
)
但这当然给了我错误:
选择列表中只能指定一个表达式,当 EXISTS 没有引入子查询。
我不知道从这里去哪里。如果我更改子查询使其只有 Prod_Num,我会得到我正在寻找的 Product Number,但我会得到两个存在的 Units Of Measure在产品表中。
proCode untCode
13717 DZ
13717 HC
我只想要以 HC 作为 UM 的行。
就像我说的,我尝试了多种 JOIN-ing 或 WHERE EXIST-ing 方法,但第三个表方面让我失望。
任何帮助将不胜感激。
【问题讨论】:
标签: sql-server left-join