MS Access/JET "Выражение соединения не поддерживается" Любой способ исправить этот запрос?

МОЙ КОД (я использую MS Access 2000 с JET Database Engine)

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) НЕКОТОРЫЕ ДАННЫЕ First_Name Alester Джуд Карл Джонс Last_Name ABCJ

FRIENDS(ALL VARCHAR)
My_E_Mail               Alester@lam.com Alester@lam.com  Alester@lam.com
Friend_E_Mail           jude@lam.com    carl@lam.com   jones@lam.com

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

Требуемый вывод if ("?" В запросе выше: jones@lam.com)

+--------------+-----------+------------+
|Member        |E_Mail     |  Name      |
+---------------------------------------+
 Alester A   Alester@lam.com  Alester

Требуемый вывод if ("?" В запросе выше: Alester@lam.com)

+--------------+-----------+------------+
|Member        |E_Mail     |  Name      |
+---------------------------------------+
 Jude B        jude@lam.com  Jude
 carl C        carl@lam.com  Carl
 Jones J       jones@lam.com Jones

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

Мой вопрос: я получаю эту ошибку "Выражение соединения не поддерживается"

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

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 = 'jones@lam.com') 
   LEFT OUTER JOIN Friends Friends_1 
        ON Members.E_Mail = Friends.Friend_E_Mail 
        AND Friends.My_E_Mail = 'jones@lam.com')

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

Другие вопросы по тегам