0

我的代码(我使用带有 JET 数据库引擎的 MS Access 2000)

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)SOME DATA First_Name Alester Jude Carl Jones 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“?” 是我在“?”中传递的查询字符串参数 我知道这很好用。

我的问题是:我不断收到此错误“不支持加入表达式”

是否有一种解决方法查询我可以在不使用存储过程或使用多个查询的情况下使用,因为这需要是一个单一的查询!?

4

1 回答 1

0

这个表情看起来不太对。

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')

然后手动运行查询。

于 2013-05-15T17:23:07.567 回答