NOT IN

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Pessoal essa tarde teve um DBA aqui na empresa e tinha um select que não estava devolvendo o resultado esperado, daí ele usou essa coisa, rs NOT IN alguém poderia de forma pratica me dizer para que serve?

rs

Selecionar tudo

SELECT * 
FROM TITULO_A_RECEBER TT WHERE tt.nrultimo_envio = '77' 
AND TT.DTVENCIMENTO = '30/11/2007'
AND TT.CDCLIENTE NOT IN (select tt.cdcliente 
from titulo_a_receber tt, pessoa p, usuario u, endereco e, cidade c
where 
tt.nrregistro_cliente = p.nrregistro and
tt.nrregistro_cliente = u.nrregistro_usuario and
tt.nrregistro_cliente = e.nrregistro and 
tt.dtvencimento = '30/11/2007'and)
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

NOT IN: Significa que não esteja entre (ou, na lista).

Por exemplo,
Você tem uma tabela de produtos, onde se tem o código do produto e o grupo deste produto.

Você tem que realizar um select e, retornar TODOS os registros, EXCETO os do grupo 99 e 100.

Daí você pode utilizar o NOT IN para distinguir este grupo que não deseja exibir os itens.

Exemplo:

Selecionar tudo

			SELECT *
     FROM  TB_PRODUTOS
    WHERE CD_GRUPO_PROD NOT IN (99,100);
   

Ou, passando-se uma tabela de valores (conforme teu exmeplo acima):

Selecionar tudo

    SELECT *
      FROM TB_PRODUTOS
     WHERE CD_GRUPO_PROD NOT IN (SELECT CD_GRUPO	                                FROM TAB_GRUPO_PRODUTOS);
				
				

Nota importante: Por questões de performance, às vezes se faz necessária a utilização das funções "EXISTS" ou "NOT EXISTS", ao invés de NOT IN, mas, tudo isso depende do custo da tua consulta.
carlos12
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 123
Registrado em: Qua, 24 Out 2007 4:31 pm
Localização: rio

Cara brigadão pelo esclarecimento valews de verdade
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Imagin brother,

Precisando, estamos ai.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes