几天后,我在使用早期版本的几年后使用Access 2013,似乎已经对内部SQL引擎进行了一些更改。我正在进行如下连接查询:
SELECT T.STUKLIJSTNUMMER, SR.STUKLIJSTNUMMER, SR.SUB_STUKLIJSTNR
FROM STUKREG AS SR
INNER JOIN (SELECT * FROM STUKREGsubs2 WHERE SUB_STUKLIJSTNR<>'') AS T ON
SR.STUKLIJSTNUMMER=T.SUB_STUKLIJSTNR;
STUKREG是一个自引用表。 STUKREGsubs2查询如下所示(按预期工作):
SELECT S.STUKLIJSTNUMMER, SR.STUKLIJSTNUMMER, SR.SUB_STUKLIJSTNR
FROM STUKREG AS SR INNER JOIN STUKREGsubs1 AS S ON
SR.STUKLIJSTNUMMER=S.SUB_STUKLIJSTNR;
其中STUKREGsubs1是一个查询(按预期工作):
SELECT SR.STUKLIJSTNUMMER, SR.SUB_STUKLIJSTNR, VAL(SR.STUKLIJSTNUMMER) AS SORDER
FROM STUKREG AS SR
WHERE ABS='Sub' AND CSTR(VAL(SR.STUKLIJSTNUMMER))=SR.STUKLIJSTNUMMER
ORDER BY SR.STUKLIJSTNUMMER;
根据我的知识,查询一直有效(在早期版本中),但现在Access抱怨:'指定字段'STUKLIJSTNUMMER'可以引用SQL语句的FROM子句中列出的多个表'。我知道这意味着什么,但我不明白为什么会出现错误,因为我清楚地区分了源表/查询。是因为在连接部分中使用了另一个查询吗?任何帮助表示赞赏!
答案 0 :(得分:1)
确保在不同的表中为具有相同名称的列添加别名,以便在结果查询中它们的名称是唯一的。
因此,对于您的STUKREGsubs2查询,请为其中一个STUKLIJSTNUMMER输出添加别名,如下所示:
SELECT S.STUKLIJSTNUMMER, SR.STUKLIJSTNUMMER AS STUKLIJSTNUMMER_2, SR.SUB_STUKLIJSTNR
FROM STUKREG AS SR INNER JOIN STUKREGsubs1 AS S ON
SR.STUKLIJSTNUMMER=S.SUB_STUKLIJSTNR
然后,确保第一个查询中的T.STUKLIJSTNUMMER引用STUKREGsubs2中的正确列(来自STUKREGsubs1查询的STUKLIJSTNUMMER或来自STUKREG表的STUKLIJSTNUMMER_2)。