Página 1 de 1

NOT IN

Enviado: Ter, 13 Nov 2007 11:50 am
por carlos12
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)

Enviado: Ter, 13 Nov 2007 12:01 pm
por Trevisolli
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.

Enviado: Ter, 13 Nov 2007 3:53 pm
por carlos12
Cara brigadão pelo esclarecimento valews de verdade

Enviado: Ter, 13 Nov 2007 4:11 pm
por Trevisolli
Imagin brother,

Precisando, estamos ai.