2010-09-10 16 views
1

Quel est le problème avec ce code?Erreur de syntaxe MySQL

FROM product_tag, ps_product_tags_all 
LEFT JOIN users ON 
users.id = product_tag.lang 
LEFT JOIN images ON 
images.id = ps_product_tags_all.lang 

Erreur:

Unknown column 'product_tag.lang' in 'on clause' 
+0

Est-ce que lang existe effectivement dans la table product_tag ;-) – simnom

+0

s'il vous plaît poster la structure de la table et la requête ensemble alors. –

Répondre

2

Ce n'est pas erreur de syntaxe, mais l'erreur de la structure - vous n'avez pas la colonne "lang" dans le tableau "de product_tag".

+1

Ce n'est probablement pas la raison pour laquelle la requête échoue. –

4

Vous mélangez des jointures implicites et explicites et vous vous associez dans le mauvais ordre. Essayez ceci:

SELECT * 
FROM ps_product_tags_all 
LEFT JOIN images ON 
images.id = ps_product_tags_all.lang, product_tag 
LEFT JOIN users ON 
users.id = product_tag.lang 
WHERE ... 

Rappelez-vous que JOIN explicite a priorité supérieure à la jointure implicite de l'utilisation par des virgules. Pour éviter cette erreur, je vous recommande toujours utiliser jointures explicites:

SELECT * 
FROM ps_product_tags_all 
LEFT JOIN images ON images.id = ps_product_tags_all.lang 
LEFT JOIN product_tag ON ... 
LEFT JOIN users ON users.id = product_tag.lang 
+0

bon à savoir, j'ai toujours rejoint sans cette info et n'a jamais eu un tel problème. ;] –