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')
Затем запустите запрос вручную.