Несколько дней я работаю с 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» может ссылаться на более чем одну таблицу, указанную в предложении FROM вашего оператора SQL». Я знаю, что это значит, но я не понимаю, почему возникает ошибка, потому что я четко различаю исходные таблицы/запросы. Это из-за использования другого запроса в части соединения? Любая помощь приветствуется!
STUKREGsubs2
должно бытьSTUKREG subs2
и то же самое дляSTUKREGsubs1
- person Sal00m   schedule 25.03.2014