select
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
Curtidas 0
Respostas
Dadonas
08/08/2006
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
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
GOSTEI 0
Cpd_arim
08/08/2006
valeu brother
GOSTEI 0
Eurismar
08/08/2006
select * from tabela1 where id_campo not in (select id_campo from tabela2)
GOSTEI 0
Eurismar
08/08/2006
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.
select * from tabela1 where id_campo not in (select id_campo from tabela2)
se não der certo pergunte novamente.
GOSTEI 0
Alc2003
08/08/2006
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.
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.
GOSTEI 0
Dadonas
08/08/2006
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)
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)
GOSTEI 0
Alc2003
08/08/2006
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
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
GOSTEI 0
Dadonas
08/08/2006
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)
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)
GOSTEI 0
George_piaulino
08/08/2006
GOSTEI 0
Dadonas
08/08/2006
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...
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...
GOSTEI 0