Por que consigo executar uma determinada query no MySQL 4, mas não consigo executá-la no MySQL 5?

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:
#1054 - Unknown column 'p.products_id' in ’on clause'
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%'
)
)
Atualizado em 10/05/2022
 
  • 2 Usuários acharam útil
Esta resposta lhe foi útil?

Artigos Relacionados

Como acessar remotamente o banco de dados MySQL?

Os servidores Linux (cPanel) possuem um recurso para permitir que se conecte ao Banco de Dados...

Estranha mensagem de erro em meu OsCommerce

Ao tentar acessar o OsCommerce e clicar em qualquer categoria da loja ou fazer uma busca por...

Como criar um banco de dados MySQL

Para criar um Banco de Dados MySQL: No Painel de Controle cPanel, clique sobre o ícone "Bancos...