Выражение соединения MS Access / JET не поддерживается. Как исправить этот запрос?

МОЙ КОД (я использую MS Access 2000 с ядром базы данных JET)

SELECT Members.First_Name + ' ' + Members.Last_Name AS Member,
       iif(NULL,Friends.My_E_Mail, Friends.Friend_E_Mail) AS E_Mail, 
       Members.First_Name AS Name 
FROM ((Members 
       LEFT OUTER JOIN Friends 
            ON Members.E_Mail = Friends.My_E_Mail 
            AND Friends.Friend_E_Mail = ?) 
       LEFT OUTER JOIN Friends Friends_1 
            ON Members.E_Mail = Friends.Friend_E_Mail 
            AND Friends.My_E_Mail = ?)

Члены моих таблиц (все VARCHAR) НЕКОТОРЫЕ ДАННЫЕ Имя Алестер Джуд Карл Джонс Фамилия A B C J

FRIENDS(ALL VARCHAR)
My_E_Mail               [email protected] [email protected]  [email protected]
Friend_E_Mail           [email protected]    [email protected]   [email protected]

*** ПРИМЕЧАНИЕ Таблица друзей РАЗРЕШАЕТ дубликаты, поэтому jude может быть на my_E_Mail, но НЕ МОЖЕТ добавить alester, потому что они уже друзья.

Желаемый результат, если ("?" В запросе выше: [email protected])

+--------------+-----------+------------+
|Member        |E_Mail     |  Name      |
+---------------------------------------+
 Alester A   [email protected]  Alester

Желаемый результат, если ("?" В запросе выше: [email protected])

+--------------+-----------+------------+
|Member        |E_Mail     |  Name      |
+---------------------------------------+
 Jude B        [email protected]  Jude
 carl C        [email protected]  Carl
 Jones J       [email protected] Jones

PS знак "?" параметры строки запроса, которые я передаю в "?" Я знаю, что это прекрасно работает.

МОЙ ВОПРОС: Я все время получаю сообщение об ошибке «Выражение соединения не поддерживается».

Есть ли обходной запрос, который я могу использовать без использования хранимой процедуры или использования нескольких запросов, поскольку это должен быть ОДИН ОДИН ЗАПРОС !?


person James Putin    schedule 15.05.2013    source источник


Ответы (1)


Это выражение не выглядит правильным.

iif(NULL,Friends.My_E_Mail, Friends.Friend_E_Mail)

Вы могли иметь в виду

iif(isnull(Friends.My_E_Mail), Friends.Friend_E_Mail, Friends.My_E_Mail)

Вы не могли бы.

Я думаю, что у вас все в порядке. Вы можете проверить их, заменив "?" с буквальными строками.

   LEFT OUTER JOIN Friends 
        ON Members.E_Mail = Friends.My_E_Mail 
        AND Friends.Friend_E_Mail = '[email protected]') 
   LEFT OUTER JOIN Friends Friends_1 
        ON Members.E_Mail = Friends.Friend_E_Mail 
        AND Friends.My_E_Mail = '[email protected]')

Затем запустите запрос вручную.

person Mike Sherrill 'Cat Recall'    schedule 15.05.2013