首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么左联接会导致“多部分标识符不能绑定”错误,而内部联接不绑定呢?

为什么左联接会导致“多部分标识符不能绑定”错误,而内部联接不绑定呢?
EN

Stack Overflow用户
提问于 2014-02-04 11:15:43
回答 2查看 2.3K关注 0票数 1

当试图在Access 2010中运行以下SQL查询时,我得到的错误是“多部分标识符'MS2.ExtraValueID‘无法绑定”。

代码语言:javascript
复制
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,它的工作原理是返回结果,而不是返回我想要的结果,因为我应该返回联系人详细信息中的所有结果,无论两个额外的字段表中是否有匹配的记录。

代码语言:javascript
复制
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;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-04 12:41:46

解决了这个问题-- Access是在发脾气,因为我混合了INNERLEFT联接,即使INNER连接在构成更大查询的组成查询中,并且应该只是输出结果。通过替换两个额外字段查询中的所有INNER联接,查询运行时间会稍长一些,但运行正常。

票数 1
EN

Stack Overflow用户

发布于 2014-02-04 11:27:06

代码语言:javascript
复制
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;

去掉括号()。

为了提高查询的可读性,请使用别名

代码语言:javascript
复制
 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;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21550925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档