2010-06-07 3 views
2

У меня есть этот запрос:mySQL: Выберите WHERE вызывает ошибку - почему?

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; 

без WHERE подряд, все отлично работает, но с ним, я получаю Error 1064 (ошибка синтаксиса), брошенный в моем лице. Я предполагаю, что это имеет какое-то отношение к фактическому размещению строки WHERE в запросе, поэтому я попытался переместить ее, но не повезло.

Что я могу сделать?

ответ

10

Где проходит через стыки, перед группой по (объединений считаются частью пункта from)

1

Проверьте это:

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;