当试图在Access 2010中运行以下SQL查询时,我得到的错误是“多部分标识符'MS2.ExtraValueID‘无法绑定”。
SELECT [Contact Details].ContactID
FROM ([Contact Details] LEFT JOIN [Extra Fields - Newsletters & Bulletins] ON [Contact Details].ContactID = [Extra Fields - Newsletters & Bulletins].ContactID) LEFT JOIN [Extra Fields - Number of Employees] ON [Extra Fields - Newsletters & Bulletins].ContactID = [Extra Fields - Number of Employees].ContactID;ExtraValueID出现在WHERE子句中的两个“额外值.”查询,但没有输出。
回顾几年前的this question,它表明这可能是由于一个错误。但是,我看不出上面的SQL有什么问题,这意味着构成这个较大查询的单个查询中的一个是错误的。
但是,每个查询单独运行都很好,如果我只尝试将一个额外的字段表连接到它,它就能正常工作。我认为符号可能会引起问题,但是用"and“替换它们,或者完全删除它们都没有什么区别。
如果我用LEFT JOINs替换INNER JOIN,它的工作原理是返回结果,而不是返回我想要的结果,因为我应该返回联系人详细信息中的所有结果,无论两个额外的字段表中是否有匹配的记录。
SELECT [Contact Details].ContactID, [Contact Details].[Client Code], [Extra Fields - Newsletters & Bulletins].Newsletters, [Extra Fields - Number of Employees].[Number of Employees]
FROM ([Contact Details] INNER JOIN [Extra Fields - Newsletters & Bulletins] ON [Contact Details].ContactID = [Extra Fields - Newsletters & Bulletins].ContactID) INNER JOIN [Extra Fields - Number of Employees] ON [Extra Fields - Newsletters & Bulletins].ContactID = [Extra Fields - Number of Employees].ContactID;发布于 2014-02-04 12:41:46
解决了这个问题-- Access是在发脾气,因为我混合了INNER和LEFT联接,即使INNER连接在构成更大查询的组成查询中,并且应该只是输出结果。通过替换两个额外字段查询中的所有INNER联接,查询运行时间会稍长一些,但运行正常。
发布于 2014-02-04 11:27:06
SELECT [Contact Details].ContactID
FROM [Contact Details] LEFT JOIN [Extra Fields - Newsletters & Bulletins] ON [Contact Details].ContactID = [Extra Fields - Newsletters & Bulletins].ContactID LEFT JOIN [Extra Fields - Number of Employees] ON [Extra Fields - Newsletters & Bulletins].ContactID = [Extra Fields - Number of Employees].ContactID;去掉括号()。
为了提高查询的可读性,请使用别名
SELECT c.ContactID
FROM [Contact Details] c
LEFT JOIN [Extra Fields - Newsletters & Bulletins] e
ON c.ContactID = e.ContactID
LEFT JOIN [Extra Fields - Number of Employees] emp
ON e.ContactID = emp.ContactID;https://stackoverflow.com/questions/21550925
复制相似问题