2014-03-25 55 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