[firebase-br] Dúvida cláusula where com operador or e/ou and

Eduardo Bahiense eduardo em icontroller.com.br
Qua Jan 27 11:24:25 -03 2010


Andrei Luís escreveu:
> Bom dia a todos,
> 
> Estou montando um SQL e me surgiu uma dúvida quanto ao uso dos operadores or
> e and.
> 
> Exemplo:
> 
> 1) where (cid.cidade = 'NOVO HAMBURGO')
>    or (cid.cidade = 'ESTANCIA VELHA')
>    or (cid.cidade = 'CAMPO BOM')
>    or (cid.cidade = 'SAO LEOPOLDO')
> and (v.ano<>2010)
> 
> 
> 2) where cid.cidade = 'NOVO HAMBURGO'
>    or cid.cidade = 'ESTANCIA VELHA'
>    or cid.cidade = 'CAMPO BOM'
>    or cid.cidade = 'SAO LEOPOLDO'
> and v.ano<>2010
> 
> 
> 3) where (cid.cidade = 'NOVO HAMBURGO'
>    or cid.cidade = 'ESTANCIA VELHA'
>    or cid.cidade = 'CAMPO BOM'
>    or cid.cidade = 'SAO LEOPOLDO')
> and (v.ano<>2010)
> 
> 
> Qual sentença traz o resultado correto? A 3?
> 
Depende do que você espera como correto:

Se o correto for qualquer uma das cidades passadas contanto que o ano 
seja diferente 2010, a 3 está correta.

Observe que 1 e 2 são iguais, diferindo apenas no número de parênteses e 
retornarão qualquer cidade listada, mas trará TAMBÉM, qualquer outra em 
que v.ano for diferente de 2010.

Eduardo





Mais detalhes sobre a lista de discussão lista