[firebase-br] Problema com operador IN

Daniel Chiovitti danielchiovitti em gmail.com
Seg Abr 2 16:05:32 -03 2012


Boa tarde.

O EXISTS não vai considerar os valores nulos.
Faz um teste com o IN adicionando no where uma condição para não retornar
nulos, isso provavelmente está acontecendo por causa de tipos UNKNOW.

2012/4/2 Tecnobyte Informática <temp2 em tecnobyte.com.br>

> Boa tarde
>
> No meu entender os comandos abaixo são equivalentes e portanto deveriam
> retornar o mesmo conteúdo. Porém quando uso o comando com IN conforme
> abaixo não retorna nenhuma linha, enquanto que ao usar EXISTS exatamente
> como abaixo retorna 74 linhas.
>
> -- Retorna ZERO linhas:
>
> SELECT * FROM Cliente
> WHERE NOT Cliente.Id IN
>  (SELECT Venda.Cliente_Id FROM Venda)
>
> -- Também retorna ZERO linhas (usei um par de parêntesis a mais):
>
> SELECT * FROM Cliente
> WHERE NOT (Cliente.Id IN
>  (SELECT Venda.Cliente_Id FROM Venda))
>
> -- Também retorna ZERO linhas (mudei o NOT para imediatamente antes do IN):
>
> SELECT * FROM Cliente
> WHERE Cliente.Id NOT IN
>  (SELECT Venda.Cliente_Id FROM Venda)
>
> -- Retorna 74 linhas:
>
> SELECT * FROM Cliente
> WHERE NOT EXISTS
>  (SELECT * FROM Venda WHERE Venda.Cliente_Id = Cliente.Id)
>
> Não consegui descobrir porque não funciona com IN e funciona com EXISTS,
> uma vez que ao meu ver são comandos equivantes neste caso. Alguém pode me
> ajudar?
>
> Atenciosamente.
>
> Daniel P. Guimarães
> Tecnobyte Informática
> www.tecnobyte.com.br
>
>
> ______________________________**________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/**artigo.php?id=1107<http://www.firebase.com.br/fb/artigo.php?id=1107>
> Para consultar mensagens antigas: http://firebase.com.br/**pesquisa<http://firebase.com.br/pesquisa>
>



Mais detalhes sobre a lista de discussão lista