Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 496733
            [titulo] => Dúvida sobre Select no SQL Server
            [dataCadastro] => DateTime Object
                (
                    [date] => 2014-10-05 16:12:13
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 232232
            [status] => A
            [isExample] => 
            [NomeUsuario] => Joel Rodrigues
            [Apelido] => 
            [Foto] => 232232_20161017163010.jpg
            [Conteudo] => 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).
        )

)

Dúvida sobre Select no SQL Server

Denis
   - 05 out 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..

Post mais votado

Joel Rodrigues
   - 05 out 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).

1
|
0

Cléverson Specht
|
MVP
Pontos: 500
    06 out 2014

Bom dia Denis,

Tente essa consulta:

#Código

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)

1
|
0

Denis
   - 06 out 2014

Obrigado galera!!

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

Abraços

0
|
0

Joel Rodrigues
   - 07 out 2014

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

0
|
0