I’m getting a syntax error near WHERE tbkay.keyword = 'ipsum'
in the following request (using phpmyadmin):
SELECT tbart.articles_id FROM articles AS tbart LEFT JOIN keywords AS tbkey LEFT JOIN articles_keyword AS tbjoin ON tbart.articles_id = tbjoin.articles_id AND tbkey.id = tbjoin.keywords_id WHERE tbkey.keyword = 'ipsum'
Advertisement
Answer
You are not using an ON
clause after each join:
SELECT tbart.articles_id FROM articles AS tbart INNER JOIN articles_keyword AS tbjoin ON tbart.articles_id = tbjoin.articles_id INNER JOIN keywords AS tbkey ON tbkey.id = tbjoin.keywords_id WHERE tbkey.keyword = 'ipsum'
I also changed the joins to INNER
joins because the WHERE
clause returns only matching rows.
If you want to keep the LEFT
join and return all the rows of articles
you must move this condition to the ON
clause:
SELECT tbart.articles_id FROM articles AS tbart LEFT JOIN articles_keyword AS tbjoin ON tbart.articles_id = tbjoin.articles_id LEFT JOIN keywords AS tbkey ON tbkey.id = tbjoin.keywords_id AND tbkey.keyword = 'ipsum'