【发布时间】:2018-06-21 23:13:16
【问题描述】:
我有以下疑问...
查询 #1
SELECT aa.DocNum, b.QualityClass
FROM dbo_TransferHistory AS aa LEFT JOIN PCQualityClass AS bb ON aa.DocNum = bb.DocumentNum
WHERE (((aa.DocNum)=[Enter Doc Num]));
查询 #2
SELECT aa.DocNum, bb.QualityClass, cc.BldgCond
FROM (dbo_TransferHistory AS aa LEFT JOIN PCQualityClass AS bb ON aa.DocNum = bb.DocumentNum)
LEFT JOIN PCBldgCond AS cc ON aa.DocNum = cc.DocumentNum
WHERE (((aa.DocNum)=[Enter Doc Num]));
dbo_TransferHistory 是我通过 ODBC 连接器访问的表。 PCQualityClass 和 PCBldgCond 是基于另一个 ODBC 表的两个查询。这两个查询都只有主查询中引用的两个字段。
DocNum 和 DocumentNum 是同一类型(“短文本”,长度为 12),虽然我想让名称相同,但我不能。 运行查询时,会弹出一个输入框,并将 [Enter Doc Num] 替换为我要为其提供数据的文档编号。
查询是在 Access 中使用创建查询工具创建的。
问题是,虽然查询 #1 可以工作,但查询 #2 会导致错误“无效操作”。
更改为内部联接将允许查询 #2 运行,但会导致问题,因为有时两个子查询中的一个或两个没有数据,但我仍需要主表中的数据。
请帮忙,我不知道为什么这不起作用。这是 Access 2013 的错误,它不允许在同一个查询中使用两个左连接还是我缺少的其他东西?
【问题讨论】:
-
如果您从查询 #2 中删除
PCQualityClass,它会起作用吗? -
是的。仅使用 PCBldgCond 连接运行 #2 即可。我也尝试过将其他查询作为连接的右侧。当只有一个连接时,一切都很好。添加第二个连接,Access 会触发“无效操作”错误。
标签: sql ms-access ms-access-2013