MS Access 加入以创建新字段

Posted

技术标签:

【中文标题】MS Access 加入以创建新字段【英文标题】:MS Access Joins to create a new field 【发布时间】:2011-02-02 00:09:41 【问题描述】:

我在 Microsoft Access 中有三个表。

我有一个查询,它在一个属性上连接前两个,但如果 Table2 中给定名称的 MeasurementType 为“允许”,则需要使用第三个表来创建一个“标志”字段。

例如。

Measures            Names                     AllowedTypes
-------             -------                   -------
UniqueVal ------->  UniqueVal (PK)  /------>  Name
Measurement         Name -----------    --->  AllowedType
MeasurementType -----------------------/      ID (PK)                    

我的“合并”查询显示

SELECT Measures.UniqueVal, Measures.Measurement, Measures.MeasurementType, Names,Name
FROM Measures JOIN Names on Measures.UniqueVal = Names.UniqueVal

但如果该名称的 MeasurementType 不在 AllowedTypes 中,我需要添加一个“标志字段”(每个名称可能有多个允许的类型)。我尝试像上面描述的那样进行连接,但我得到“不允许加入”和其他类似的废话。我只是想不出这个纸板箱的出路。想法?

【问题讨论】:

【参考方案1】:

Access' 数据库引擎需要你明确地告诉它你想要什么类型的 JOIN:INNER JOIN;左连接;正确的加入。

您的字段列表中的逗号也放错了位置。

我的猜测是这个查询更接近你想要的:

SELECT Measures.UniqueVal, Measures.Measurement, Measures.MeasurementType, Names.[Name]
FROM Measures INNER JOIN Names on Measures.UniqueVal = Names.UniqueVal

【讨论】:

Aaaannnd。 ACE 连接处理器是愚蠢的(注意:这是描述性的,不是一般的访问抨击)。检查“不支持联接表达式”的帮助表示联接的“结果可能会因评估联接的顺序而异”。嗯,这不是parens应该做的,执行评估顺序吗?没关系.... 我认为帮助文件的建议是,如果您更改括号,则可以更改评估顺序,因此结果可能会有所不同。对我来说,Access/Jet/ACE 似乎在抨击——您似乎将帮助文件中的不清晰误认为是查询优化器中的“缺陷”,而不是假设文档不足,而是责怪查询优化器。

以上是关于MS Access 加入以创建新字段的主要内容,如果未能解决你的问题,请参考以下文章

Access 中的级联字段加入

在 MS ACCESS 中查找完成的字段百分比

加入sql还是ms-access?

使用 Python 在 MS Access 中传输数据

MS Access 运行时错误 3999

MS Access:如何过滤非报告字段的报告?