无法绑定多部分标识符“t.PartNumber” - 与工会
我需要TableMain中的记录,这些记录在ActivePN中具有记录匹配,并且还需要[Parts]中的匹配。看起来联合应该做的伎俩,但我一直在反对“无法绑定”或“无效列名称”错误。无法绑定多部分标识符“t.PartNumber” - 与工会
我敢肯定,我可以通过创建临时表来完成我所需要的工作,但我试图保持简单。
Select * from TableMain t
INNER JOIN (select [PartNumber]
From ActivePNs ap
Where ap.PartNumber = t.PartNumber
Union
select [Number] PartNumber
From [Parts] p
Where p.Number = t.PartNumber) c
On t.PartNumber = c.PartNumber
假设有没有ActivePNs或零件给定的部分号码,然后就我的理解,这应该做的伎俩多行 - 只发现在TableMain在ActivePNs 有部分号码行配件:
Select t.*
from TableMain t
INNER JOIN ActivePNs ap ON t.PartNumber = ap.PartNumber
INNER JOIN Parts p ON t.PartNumber = p.Number
你的问题是在UNION
后SELECT
。
select [Number] PartNumber -- You rename Number to PartNumber
From [Parts] p
Where p.Number = t.PartNumber -- but still reference Number here
的Number
在SELECT
混叠意味着有用于查询的WHERE
部使用没有列p.Number
。
派生表不能与它要加入的表相关联。你正在尝试做什么可以这样实现:
SELECT
t.*,
COALESCE(ap.PartNumber, p.Number) AS PartNumber
FROM TableMain t
LEFT JOIN ActivePN ap ON ap.PartNumber = t.PartNumber
LEFT JOIN Parts p ON p.Number = t.PartNumber
WHERE NOT (ap.PartNumber IS NULL AND p.Number IS NULL)
您的意思是:WHERE NOT(ap.PartNumber IS NULL和p.Number IS NULL) – JonV 2012-01-14 22:59:36
@JonV:基本上,是的。我通常在这种情况下测试PK,但我应该马上澄清,或使用您的版本。更新了我的答案。 – 2012-01-14 23:20:12
对不起 - 我正在寻找TableMain中有ActivePNs或零件的PartNumber行。叹气 - 我也觉得ActivePNs和Parts有一些相同的记录。所以我需要做一个分组似乎... – JonV 2012-01-14 23:12:54