Синтаксическая ошибка (отсутствует оператор) - PullRequest
4 голосов
/ 21 января 2012

Я не обученный программист, поэтому пытаться сделать это сложно. Я получаю вышеупомянутую ошибку с этим кодом SQL, и я не могу выяснить причину. Пожалуйста, сообщите.

SELECT a.agentname as 'Salesforce AgentName', a.loannumber, ag.agentname as 'portal agentname'
from salesforce a 
inner join portal b ON a.loannumber = b.loannumber

left join agents ag ON b.agentid = ag.agentid
where a.agentname <> ag.agentname

Ответы [ 2 ]

2 голосов
/ 21 января 2012

Небольшое предположение ( на основе здесь )

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 ag
         ON b.agentid = ag.agentid
WHERE  a.agentname <> ag.agentname  

Кстати, обычно ошибочно ссылаться на столбцы внешней объединенной таблицы в предложении WHERE, если вы не учитываетевероятность того, что они NULL

1 голос
/ 21 января 2012

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...