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
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
Curtir tópico
+ 0
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.
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
Responder
Mais Posts
Clique aqui para fazer login e interagir na Comunidade :)