Ir para conteúdo

POWERED BY:

Arquivado

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

Ulisses José

Problema com a query

Recommended Posts

Tudo bem pessoal...

 

tenho um sistema em php que de acordo com o que é digitado no campo de busca será montada uma query diferente, ou seja, é feita a montagem dinamica da mesma.

 

Mas o problema é o seguinte:

 

Esse é um exemplo de resultado de uma montagem:

 

SELECT U.pontuacao, U.id, G.* FROM (guiacomercial AS G LEFT JOIN usuario AS U ON U.id=G.id_user) WHERE G.titulo LIKE '%teste%' AND G.titulo LIKE '%busca%' OR G.descricao LIKE '%teste%' AND G.descricao LIKE '%busca%' OR G.palavrasChave LIKE '%teste%' AND G.palavrasChave LIKE '%busca%' AND U.ativo = 1 AND G.cidade = 'Barbacena' AND G.Estado = 'MG' AND G.bairro = 'Centro' ORDER BY U.pontuacao DESC

No caso acima digitei teste de busca

 

Essa parte do código não da nada: AND U.ativo = 1 AND G.cidade = 'Barbacena' AND G.Estado = 'MG' AND G.bairro = 'Centro'

ou seja, ele não filtra as cidades, se o usuário está ativo ou não, nem se está em outro estado e nem o bairro... o que ta me deixando meio perdido, pois também não gera nenhum tipo de erro!!

 

Se alguém puder me ajudar aí agradeço muito!

 

Grande abraço galera, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema eh q o OR tah solto na query fazendo com q tudo seja verdadeiro caso o or seja verdadeiro

 

Acho q o q você quer eh o seguinte

 

SELECT U.pontuacao, U.id, G.* FROM (guiacomercial AS G LEFT JOIN usuario AS U ON U.id=G.id_user) WHERE G.titulo LIKE '%teste%' AND G.titulo LIKE '%busca%' OR G.descricao LIKE '%teste%' AND (G.descricao LIKE '%busca%' OR G.palavrasChave LIKE '%teste%') AND G.palavrasChave LIKE '%busca%' AND U.ativo = 1 AND G.cidade = 'Barbacena' AND G.Estado = 'MG' AND G.bairro = 'Centro' ORDER BY U.pontuacao DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

É isso aí... o or realmente tava fazendo com que tudo ficasse verdadeiro...

 

O resultado final ficou assim:

 

SELECT U.pontuacao, U.id, G.* FROM (guiacomercial AS G LEFT JOIN usuario AS U ON U.id=G.id_user) WHERE ( G.titulo LIKE '%teste%' AND G.titulo LIKE '%busca%' OR G.descricao LIKE '%teste%' AND G.descricao LIKE '%busca%' OR G.palavrasChave LIKE '%teste%' AND G.palavrasChave LIKE '%busca%') AND U.ativo = 1 AND G.cidade = 'Barbacena' AND G.Estado = 'MG' ORDER BY U.pontuacao DESC

Brigadão pela dica, até mais!

 

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

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.