2014-03-25 58 views
0

自从几天以后,我与Access 2013一起工作了几年之后的早期版本,并且似乎已经对内部SQL引擎进行了一些更改。我正在处理加入查询,如下所示:错误的访问2013错误

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

我添加了引用的查询。 – ganzpopp

+0

'STUKREGsubs2'必须是'STUKREG subs2',对于'STUKREGsubs1'必须相同 – Sal00m

+0

不能这样,因为这些是涉及的查询的名称。 – ganzpopp

回答

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

+0

就是这样!非常感谢你! – ganzpopp