错误的Access 2013错误

时间:2014-03-25 13:58:26

标签: sql inner-join ms-access-2013

几天后,我在使用早期版本的几年后使用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子句中列出的多个表'。我知道这意味着什么,但我不明白为什么会出现错误,因为我清楚地区分了源表/查询。是因为在连接部分中使用了另一个查询吗?任何帮助表示赞赏!

1 个答案:

答案 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)。