2010-06-07 6 views
2

J'ai cette requête:mySQL: Sélectionnez WHERE provoque une erreur - pourquoi?

SELECT `manufacturers`.*, `languages`.*, COUNT(`products`.`id`) AS productcount 
FROM (`manufacturers`) 
WHERE `manufacturers`.`flushed` = `0` 
JOIN `languages` ON `manufacturers`.`lang` = `languages`.`id` 
LEFT OUTER JOIN `products` ON 
`products`.`manuf` = `manufacturers`.`mid` 
GROUP BY manufacturers.id 
ORDER BY `languages`.`id` asc, `manufacturers`.`mid` asc; 

Sans la ligne WHERE, tout fonctionne très bien, mais avec elle, je reçois une erreur 1064 (erreur de syntaxe) jeté dans mon visage. Je suppose que cela a quelque chose à voir avec le placement réel de la ligne WHERE dans la requête, donc j'ai essayé de le déplacer, mais sans aucun succès.

Que puis-je faire?

Répondre

10

Où va après les jointures, avant que le groupe par (jointures sont considérés comme faisant partie de la clause from)

1

Vérifiez ceci:

SELECT `manufacturers`.*, `languages`.*, COUNT(`products`.`id`) AS productcount 
FROM (`manufacturers`) 
JOIN `languages` ON `manufacturers`.`lang` = `languages`.`id` 
LEFT OUTER JOIN `products` ON 
`products`.`manuf` = `manufacturers`.`mid` 
WHERE `manufacturers`.`flushed` = `0    -- where comes after joins 
GROUP BY manufacturers.id 
ORDER BY `languages`.`id` asc, `manufacturers`.`mid` asc; 
Questions connexes