Selecao DevMedia QUERO SER PRIME

Fórum select #327029

08/08/2006

0

preciso fazer um select para selecionar registros que estão em uma tabela mas não estão na outra, exemplo esta na tabela 1 mas não esta na tabela 2.


Cpd_arim

Cpd_arim

Responder

Posts

08/08/2006

Dadonas

Para isso vc terá que usar o operador ´not in´. Ex:

select *
from customer
where id_customer not in (select id_customer
from bad_customer)

Neste caso ele pega os itens da tabela customer que não estão na tabela bad_customer.

Espero ter ajudado


Responder

Gostei + 0

08/08/2006

Cpd_arim

valeu brother


Responder

Gostei + 0

08/08/2006

Eurismar

select * from tabela1 where id_campo not in (select id_campo from tabela2)


Responder

Gostei + 0

08/08/2006

Eurismar

pelo que eu entedí esse código vai resolver:

select * from tabela1 where id_campo not in (select id_campo from tabela2)

se não der certo pergunte novamente.


Responder

Gostei + 0

08/08/2006

Alc2003

Minha dúvida é saber também quais os Registros que estão na tabela pai e não estão na tabela filha. Só que são 4 Tabelas Filhas.

Fiz Assim:

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP
FROM REGIPE
WHERE CHV_CGP NOT IN (SELECT CHV_CGP
FROM TABIPE
WHERE CHV_CGP NOT IN (SELECT CHV_CGP
FROM TABIPPR
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM FIRCART))))


Só que quando rodo esse SQL deixo ele por mais de 5 horas e naum executa. Acho que trava.
Gostaria de Saber se tem um SQL mais veloz pra executar esse tipo de Consulta.
Detalhe a REGCGP(Tabela Pai) tem mais de 500 mil registros e as outras tbém estão nessa média de quantidade de Registros.


Responder

Gostei + 0

08/08/2006

Dadonas

Use o union all desta forma:

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM REGIPE)

union all

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPE)

union all

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPPR)

union all

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM FIRCART)


Responder

Gostei + 0

08/08/2006

Alc2003

Olá dadonas.
Precisava de um Select onde a CHV_CGP da REGCGP não esteja em nenhuma das 4 tabelas.

Por Exemplo:
a CHV_CGP 200 na REGCGP.
Se ela não tiver na Tabela REGIPE E nem na tabela TABIPES E nem na tabela TABIPPR E nem na Tabela FIRCART, ela será listada.

Acho q o SELECT com UNION que vc me passou listará as CHV_CGP não existentes na tabela mas independente se estiver em outra.

Era uma coisa mais ou menos assim:
SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN
(SELECT CHV_CGP
FROM REGIPE, TABIPES, TABIPPR, FIRCART)

sendo que a CHV_CGP listada não estará em nenhuma das 4 tabelas.


Mesmo assim obrigado


Responder

Gostei + 0

08/08/2006

Dadonas

Vai ser assim então:


SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM REGIPE)

union all

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPE)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPPR)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM FIRCART)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPPR)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM FIRCART)


Responder

Gostei + 0

08/08/2006

George_piaulino

Responder

Gostei + 0

09/08/2006

Dadonas

Escrevi errado na ultima resposta. Vaiser assim:

SELECT CHV_CGP
FROM REGCGP
WHERE CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPE)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM REGIPE)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM TABIPPR)
and CHV_CGP NOT IN (SELECT CHV_CGP FROM FIRCART)

Foi mal...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar