Reputation: 2146
I am writing a SQL query with inner join as this
select * from (table1 inner join table2 on table1.city = table2.code)
inner join table3 on table3.col1 = 5 and table3.col2 = 'Hello'
This giving me the error "Join expression not supported".
However, if I change the query like this then there is no error
select * from (table1 inner join table2 on table1.city = table2.code)
inner join table3 on table3.col1 = [SomeColumn] and table3.col2 = [SomeColumn]
Why is Access giving me an error on the first query?
Upvotes: 10
Views: 43624
Reputation: 8718
While the other answers work for INNER JOIN, they did not work for LEFT JOIN for me.
-- error: join expression not supported
SELECT table1.*, table2.*
FROM table1
LEFT JOIN table1 ON (table1.id = table2.t1id AND table1.fld = 'Hello')
The solution was to remove the 'Hello' condition out of the LEFT JOIN. The trick is to add " OR table1.fld IS NULL
" to still have all results from table1.
-- working as expected
SELECT table1.*, table2.*
FROM table1
LEFT JOIN table1 ON (table1.id = table2.t1id)
WHERE table1.fld = 'Hello' OR table1.fld IS NULL
Upvotes: 0
Reputation: 994
Very late but I had a similar problem with JOIN expressions on MS Access, like described here Access sometimes needs everything inside the ON part of the query to be inside parenthesis, ie:
SELECT ... JOIN <table> ON (everything here inside the parenthesis) WHERE ...
Upvotes: 38
Reputation: 123654
Why is Access giving me an error on the first query?
Well, like the error message says, that form of a JOIN expression is not supported.
You might want to try the following:
SELECT * FROM table1, table2, table3
WHERE table1.city=table2.code AND table3.col1=5 AND table3.col2='Hello'
Upvotes: 6