O MySQL 5 está mais rígido quanto à leitura de queries. Por este motivo uma query que não esteja totalmente estruturada pode apresentar algum erro, o que não ocorre no MySQL 4, pois esta versão possui um tipo diferente de análise.
Vamos supor que você esteja executando a query abaixo:
SELECT count( DISTINCT p.products_id ) AS total FROM products p LEFT JOIN manufacturers m USING ( manufacturers_id ) , products_description pd LEFT JOIN specials s ON p.products_id = s.products_id, categories c, products_to_categories p2c WHERE p.products_status = '1' AND p.products_id = pd.products_id AND pd.language_id = '4' AND p.products_id = p2c.products_id AND p2c.categories_id = c.categories_id AND ( ( pd.products_name LIKE '%dvd%' OR p.products_model LIKE '%dvd%' OR m.manufacturers_name LIKE '%dvd%' ) )
Ela seria executada normalmente no MySQL 4, porém, ao executá-la no MySQL 5 ocorre o seguinte erro:
Para solucionar este problema é necessário realizar uma pequena mudança na estrutura da query removendo as tabelas existentes entre os JOIN’s e colocando-as logo após, deixando a query com uma estrutura mais lógica como mostra abaixo:
SELECT count( DISTINCT p.products_id ) AS total FROM products p LEFT JOIN manufacturers m USING ( manufacturers_id ) LEFT JOIN specials s ON (s.products_id = p.products_id), products_description pd, categories c, products_to_categories p2c WHERE p.products_status = '1' AND p.products_id = pd.products_id AND pd.language_id = '4' AND p.products_id = p2c.products_id AND p2c.categories_id = c.categories_id AND ( ( pd.products_name LIKE '%dvd%' OR p.products_model LIKE '%dvd%' OR m.manufacturers_name LIKE '%dvd%' ) )
Qualquer dúvida em relação ao assunto, entre em contato conosco através do Atendimento
Veja também