简体   繁体   中英

MS Access/JET “Join Expression Not Supported” Any Way to Fix This Query?

MY CODE (Im using MS Access 2000 with 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 = ?)

My Tables Members(all 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

***NOTE Friends Table ALLOWS duplicates so jude can be on my_E_Mail but CAN NOT add alester because they are already friends.

Desired Output if ("?" in above query is: jones@lam.com)

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

Desired Output if("?" in above query is: 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 the "?" are query string parameters that im passing in the "?" i know that works fine.

MY QUESTION IS : I keep getting this error "Join Expression not Supported"

Is there a workaround query I can use without using a stored procedure or using multiple queries since this needs to be ONE SINGLE QUERY!?

This expression doesn't look right.

iif(NULL,Friends.My_E_Mail, Friends.Friend_E_Mail)

You might mean

iif(isnull(Friends.My_E_Mail), Friends.Friend_E_Mail, Friends.My_E_Mail)

You might not.

I think your join conditions are fine. You can test them by replacing the "?" with literal strings.

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

Then run the query manually.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM