我的代码(我使用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)一些数据First_Name Alester Jude Carl JonesLast_Name A B C J
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,因为他们已经是朋友了。
期望输出如果("?"在上面的查询是:jones@lam.com)
+--------------+-----------+------------+
|Member |E_Mail | Name |
+---------------------------------------+
Alester A Alester@lam.com Alester
期望输出如果("?"在上面的查询是: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"?"是我在"?"中传递的查询字符串参数,我知道这很好。
我的问题是:我一直得到这个错误"连接表达式不支持"
是否有一个变通的查询,我可以使用不使用存储过程或使用多个查询,因为这需要是一个单一的查询!
这个表达式看起来不对。
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')