Operadores OR

03/04/2017

0

Estou criando essa consulta, mas ele está ignorando a parte da data, é como se não estivesse na consulta. Quando eu retiro os operadores OR, retorna certo a consulta. Sabem me dizer o porque?

SELECT * FROM guarnicao WHERE data_entrada between '$datainicial' and '$datafinal' and guarda1='$guarda' OR guarda2='$guarda' OR guarda3='$guarda' OR guarda4='$guarda' OR guarda5='$guarda' order by data_entrada desc
Jonas

Jonas

Responder

Post mais votado

03/04/2017

Olá Jonas, td bem?

Isso está acontecendo porque a primeira coisa que é executada numa instrução SQL, é o que está no WHERE, e o operador OR tem prioridade sob o operador AND, então ele vai procurar a primeira instrução que estiver com OR e executar, se ela for verdadeira, nem passará para a próxima.

Para resolver, basta colocar 'prioridades', nesse caso experimente colocar parêntese.

SELECT * FROM guarnicao 
WHERE 
(data_entrada between '$datainicial' and '$datafinal') 
and 
(guarda1='$guarda' OR guarda2='$guarda' OR guarda3='$guarda' OR guarda4='$guarda' OR guarda5='$guarda')

order by data_entrada desc

Aline Bianchini

Aline Bianchini
Responder

Mais Posts

05/04/2017

Jonas

Obrigado pela ajuda... Deu certo...
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar