Dúvida sobre Select no SQL Server

SQL Server

.NET

05/10/2014

Boa tarde galera, sou iniciante em programação e estou me deparando com um problema em um SELECT

é o seguinte....

Tenho uma tabela VACINA onde contem dados de todas vacinas existentes e
Tenho uma tabela APLICACAO onde contem dados de todas aplicações de vacinas realizadas.

Quero buscar todas vacinas cujo não existem na tabela APLICACAO quando APLICACAO.IDPACIENTE = 10. (Vacinas aplicadas no paciente de id = 10)
(ou seja, todas vacinas que determinado paciente ainda não recebeu)

Select que eu tentei fazer e não deu certo:

select *from Vacina where Vacina.idVacina !=
(select Vacina.idvacina from Vacina inner join Aplicacao
on Vacina.idVacina = Aplicacao.vacina
where Aplicacao.idPaciente !=10)

Mensagem de erro:
A subconsulta retornou mais de 1 valor. Isso não é permitido quando a subconsulta segue um =, !=, <, <= , >, >= ou quando ela é usada como uma expressão.

Agradeço qualquer tipo de ajuda..
Denis

Denis

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

05/10/2014

Apenas basta mudar o operador != por NOT IN. Ou seja, o operador != é binário, atua sobre dois operadores. Nesse caso você tem um valor e quer compará-lo com uma lista, então você precisa verificar se ele NÃO ESTÁ CONTIDO (not in).
GOSTEI 1

Mais Respostas

Cléverson Specht

Cléverson Specht

05/10/2014

Bom dia Denis,

Tente essa consulta:

SELECT *
  FROM Vacina V (NOLOCK)
 WHERE V.idVacina NOT EXISTS (SELECT 1
                                FROM Aplicacao A (NOLOCK)                                   
                               WHERE V.idVacina = A.vacina
                                 AND Aplicacao.idPaciente = 10)
GOSTEI 1
Denis

Denis

05/10/2014

Obrigado galera!!

deu certo utilizando o not in, realmente ainda não conhecia esse comando.

Abraços
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

05/10/2014

Que bom que deu certo, fico feliz por ter ajudado.
Um abraço e bons códigos.
GOSTEI 0
POSTAR