Можно ли использовать подзапрос в условии join в Access?
В postgresql я могу использовать подзапрос в условии соединения
SELECT *
FROM table1 LEFT JOIN table2
ON table1.id1 = (SELECT id2 FROM table2 LIMIT 1);
Но когда я пытаюсь использовать его в Access
SELECT *
FROM table1 LEFT JOIN table2
ON table1.id1 = (SELECT TOP 1 id2 FROM table2);
Я получаю синтаксическую ошибку. Это действительно невозможно в доступе или просто моя ошибка?
я знаю, что могу получить тот же результат с WHERE
, но мой вопрос заключается в возможностях JOIN
в доступе.
1 ответ:
Это невозможно, согласно документации MSDN:
Синтаксис
Из таблицы 1 [слева | справа ] присоединить таблицу 2 к таблице 1.field1 compopr Таблица 2.field2
И (курсив мой):
Field1, field2: имена полей, которые соединяются.Поля должны иметь один и тот же тип данных и содержать один и тот же тип данных, но они не должны иметь одно и то же имя.
Похоже, что у вас даже нет жесткого кода значения в соединении; вы должны указать имя столбца для соединения.
В вашем случае вы хотели бы:
SELECT * FROM Table1 LEFT JOIN ( SELECT DISTINCT TOP 1 ID FROM Table2 ORDER BY ID ) Table2Derived ON Table1.ID = Table2Derived.ID