MS Access/JET“不支持加入表达式”有啥方法可以修复这个查询吗?

Posted

技术标签:

【中文标题】MS Access/JET“不支持加入表达式”有啥方法可以修复这个查询吗?【英文标题】:MS Access/JET "Join Expression Not Supported" Any Way to Fix This Query?MS Access/JET“不支持加入表达式”有什么方法可以修复这个查询吗? 【发布时间】:2013-05-15 16:34:44 【问题描述】:

我的代码(我使用带有 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)一些数据 名字 Alester Jude Carl Jones 姓氏 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

上述查询中的所需输出 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')

然后手动运行查询。

【讨论】:

以上是关于MS Access/JET“不支持加入表达式”有啥方法可以修复这个查询吗?的主要内容,如果未能解决你的问题,请参考以下文章

Access/jet 相当于 Oracle 的解码

从 .NET 向 Access (Jet) 表添加列

关闭 Access Jet OledbConnection 的最佳方式

WPS和MS有啥区别

有啥方法可以将 ms access 数据库与 ms word 连接起来吗?

MS Windows 有啥样的内核?