[firebase-br] Problema com operador IN
Tecnobyte Informática
temp2 em tecnobyte.com.br
Seg Abr 2 15:33:27 -03 2012
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
Mais detalhes sobre a lista de discussão lista