Access 'db engine имеет строгие требования для круглых скобок, когда ваш оператор SELECT включает более 1 объединения.Я предлагаю вам начать с упрощенной версии запроса (отменить список полей и предложение WHERE), чтобы вы могли сосредоточиться на правильном объединении.
SELECT *
FROM
(salesforce AS a
INNER JOIN portal AS b
ON a.loannumber = b.loannumber)
LEFT JOIN agents AS
ag ON b.agentid = ag.agentid;
Предполагая, что эта версия работает, попробуйте следующее:
SELECT
a.agentname AS [Salesforce AgentName],
a.loannumber,
ag.agentname AS [portal agentname]
FROM
(salesforce AS a
INNER JOIN portal AS b
ON a.loannumber = b.loannumber)
LEFT JOIN agents AS
ag ON b.agentid = ag.agentid
WHERE a.agentname <> ag.agentname;
Обратите внимание, что я заключил псевдонимы имен столбцов в квадратные скобки вместо одинарных кавычек.Одинарные кавычки не будут вызывать ошибку, но они будут включены в заголовок столбца ... что я сомневаюсь, что вы хотите.
Вы бы сделали себе одолжение, создав запросы Access в конструкторе запросов Access.Это затруднит создание запроса с синтаксисом, который не будет обрабатывать механизм БД.
Редактировать : Если целью этого запроса является сравнение значений имен агентов из таблиц salesforce и операторов, возможно, вы захотите попробовать это как предложение WHERE:
WHERE a.agentname <> ag.agentname OR ag.agentname Is Null;