:: DEVELOPER ZONE
If you have a complicated query that has many tables and that doesn't return any rows, you should use the following procedure to find out what is wrong with your query:
Teste a consulta com EXPLAIN e verifique se você pode encontrar
alguma coisa que está errada. See Secção 5.2.1, “Sintaxe de EXPLAIN (Obter informações sobre uma SELECT)”.
Selcione apenas aqueles campos que são usados na cláusula WHERE.
Remova uma tabela por vez da consulta até que ela retorne alguns registros.
Se as tabelas são grandes, é uma boa idéia usar LIMIT 10 com a consulta.
Faça um SELECT da coluna encontrou um registro com a tabela que
foi removido por última da consulta.
Se você estiver comparando colunas FLOAT ou DOUBLE com números
que tenham decimais, você não pode usar '='. Este problema é comum na
maioria das linguagens de computadores porque valores de ponto-flutuante não
são valores exatos. Na maioria dos casos, alterar o FLOAT por
DOUBLE corrigirá isto.
See Secção A.5.7, “Problemas com Comparação de Ponto Flutuante”.
Se você ainda não pode imaginar o que está errado, crie um teste mínimo que
possa ser executado com mysql test < query.sql e possa mostrar seus
problemas. Você pode criar um arquivo de teste com mysqldump --quick banco_de_dados tabela > query.sql. Abra o arquivo em um editor, remova algumas
linhas inseridas (se houver muitas) e adicione sua instrução select no fim
do arquivo.
Teste se você ainda está tendo problemas fazendo:
shell> mysqladmin create test2 shell> mysql test2 < query.sql
Envie o arquivo de teste usando mysqlbug para lista de email gerais
do MySQL.
See Secção 1.7.1.1, “As Listas de Discussão do MySQL”.
© 1995-2005 MySQL AB. All rights reserved.
