INNER JOIN в MS Jet, при АДО коннекте

Jarad
Дата: 17.05.2005 12:43:35
Мануал
Чтобы связать несколько предложений ON в инструкции JOIN, используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 AND
ON таблица_1.поле_2 оператор таблица_2.поле_2) OR
ON таблица_1.поле_3 оператор таблица_2.поле_3)];

Операции JOIN могут быть вложенными; в таком случае используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN
(таблица_2 INNER JOIN [( ]таблица_3
[INNER JOIN [( ]таблица_X [INNER JOIN ...)]
ON таблица_3.поле_3 оператор таблица_X.поле_X)]
ON таблица_2.поле_2 оператор таблица_3.поле_3)
ON таблица_1.поле_1 оператор таблица_2.поле_2;



Переписал запрос в соответсвии с мануалом к джету:
SELECT journ.DATE AS DateDoc,
journ.IDDOC, Doc.SP7998,Tab.SP8009
FROM 1SJOURN AS journ INNER JOIN ( DT8012 AS Tab INNER JOIN DH8012 AS Doc ON Doc.IDDOC = Tab.IDDOC)
ON journ.IDDOC = Tab.IDDOC AND
ON journ.LINENO = Tab.LINENO
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Вылазит Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса ''.
Где уже копать... синтаксис верный...
gerss
Дата: 18.05.2005 17:15:56
Jarad
Мануал
Чтобы связать несколько предложений ON в инструкции JOIN, используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN таблица_2
ON таблица_1.поле_1 оператор таблица_2.поле_1 AND
ON таблица_1.поле_2 оператор таблица_2.поле_2) OR
ON таблица_1.поле_3 оператор таблица_2.поле_3)];

Операции JOIN могут быть вложенными; в таком случае используйте следующий синтаксис:

SELECT поля
FROM таблица_1 INNER JOIN
(таблица_2 INNER JOIN [( ]таблица_3
[INNER JOIN [( ]таблица_X [INNER JOIN ...)]
ON таблица_3.поле_3 оператор таблица_X.поле_X)]
ON таблица_2.поле_2 оператор таблица_3.поле_3)
ON таблица_1.поле_1 оператор таблица_2.поле_2;



Переписал запрос в соответсвии с мануалом к джету:
SELECT journ.DATE AS DateDoc,
journ.IDDOC, Doc.SP7998,Tab.SP8009
FROM 1SJOURN AS journ INNER JOIN ( DT8012 AS Tab INNER JOIN DH8012 AS Doc ON Doc.IDDOC = Tab.IDDOC)
ON journ.IDDOC = Tab.IDDOC AND
ON journ.LINENO = Tab.LINENO
WHERE (1SJOURN.IDDOCDEF LIKE '%66K%')
AND (1SJOURN.DATE >= #2005-04-01#)
ORDER BY DATE
Вылазит Microsoft JET Database Engine: Ошибка синтаксиса (пропущен оператор) в выражении запроса ''.
Где уже копать... синтаксис верный...

Похоже, ON после AND лишний, попробуй ON journ.IDDOC = Tab.IDDOC AND
journ.LINENO = Tab.LINENO