Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maykel-ctba

Como corrigir este erro abaixo?

Recommended Posts

Fala povo!

 

Estava cadastrando normalmente alguns registros no meu sistema de atualização de conteúdos que eu fiz, e no último registro, ocorreu este seguinte erro na consulta! (quando fui verificar se estava OK)

 

#1104 - The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

 

SELECT secs.secId, secs.sitId, sit.sitNome, sec.secTitulo, sec.secUrl, sec.secNovaJanela, sec.secOrdenarPor, sec.secDirecao, sec.secImagem, sec.secOrdemApresentacao, sec.secPermanente, sec.secInicioVeiculacao, sec.secFimVeiculacao 

FROM sistema_secaosite secs, sistema_site sit, sistema_secao sec, sistema_secaopai pai, sistema_secaocategoria scat 

WHERE secs.sitId = 1 
AND pai.paiId = '1' 
AND sec.secId = pai.secId 
AND scat.catId = 2 
AND scat.secId = secs.secId 
AND scat.secId = sec.secId 
AND sec.secId = secs.secId 
AND sec.secAtivo = 'S' 
AND sec.secExcluido = 'N' 
AND secs.sitId = sit.sitId 
ORDER BY sec.secOrdemApresentacao ASC

 

O que é isso? A consulta está muito grande? Não saquei o problema, até 1 registro atrás estava funcionando normalmente!

--------------------------

EDIT

 

Corrigi fazendo um adendo na consulta: SET SQL_BIG_SELECTS = 1

 

Mas isso é certo? Tem algo errado com minha consulta?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Check se todos os joins necessários, um produto cartesiano indevido pode estar sendo gerado.

 

O aviso diz que o select pode olhar um número de linhas maior que o paramêtro (creio que seja um paramêtro) MAX_JOIN_SIZE.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente isto. Todos os joins devem ser informados senão um produto cartesiano indevido será gerado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque esses AND's no WHERE por por JOIN...... como o colega acima falou

 

Corrigi fazendo um adendo na consulta: SET SQL_BIG_SELECTS = 1

Mas isso é certo? Tem algo errado com minha consulta?

 

existem 2 maneiras de juntar varias tabelas, a mais antiga definida na sql-ansi 86 e como você fez usando o where. a outra maneira mais "nova" sql-ansi 92 e a seguinte:

SELECT * FROM tabela1 as t1 
INNER JOIN tabela2 as t2 ON t1.id = t2.id
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, o problema de ter que fazer isso essa altura do campeonato é que eu criei uma classe para consulta, e fiz várias condicionais, algo como Procedures, mas no PHP... Receio ter que mexer pra arrumar isso e dar pau em tudo o que foi feito até agora!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.