Insert com select e where not is [RESOLVIDO]

1. Insert com select e where not is [RESOLVIDO]

Leandro Marinho
lmbleandro

(usa Ubuntu)

Enviado em 26/10/2012 - 14:53h

Boa tarde,
Tenho dois BD's e em ambos tenho uma tabela chamada id.
Preciso fazer insert na tabela A, por exemplo, inserindo os dados da tabela B, porém antes preciso fazer uma comparação para que só sejam inseridos os registros cujo os valores id tabela B não sejam iguais na tabela A.
OU seja, se id tabela B igual à id tabela A então ele ignora e passa ao próximo registro.

Eu cheguei até aqui

INSERT INTO bancoA.tabelaA select * from bancoB.tabelaB where not exist id (aqui não sei se posso colocar o banco e tabela, tipo id.tabelaB.bancoB IN id.bancoA.tabelaA )

Como tenho pouco mais de um mês em sql está meio muito confuso.rs





  


2. Re: Insert com select e where not is [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 27/10/2012 - 12:30h

[/code]
Selecione os id da tabela B enquanto nao existirem na tabela A

SELECT b.id FROM tabelaB b, tabelaA a
WHERE b.id != a.id


Ai ficaria:


INSERT INTO bancoA.tabelaA AS select * FROM tabelaB b, tabelaA a WHERE b.id != a.id



3. Re: Insert com select e where not is [RESOLVIDO]

Leandro Marinho
lmbleandro

(usa Ubuntu)

Enviado em 29/10/2012 - 08:26h

rai3mb escreveu:

Selecione os id da tabela B enquanto nao existirem na tabela A

SELECT b.id FROM tabelaB b, tabelaA a
WHERE b.id != a.id


Ai ficaria:


INSERT INTO bancoA.tabelaA AS select * FROM tabelaB b, tabelaA a WHERE b.id != a.id


Bom dia rai3mb,
pelo que entendi vc esta comparando tabelas em um mesmo Banco,correto ?
O que eu quero é comparar o tabelas de Bancos diferentes. Até conseguir fazer a leitura do que vc fez. Me ajudou bastante.
Mas como faço para fazer a comparação de Bancos diferentes ?
Acho que faltou da minha parte deixar isto mais claro. Que o insert é em outro BD.


4. Re: Insert com select e where not is [RESOLVIDO]

Leandro Marinho
lmbleandro

(usa Ubuntu)

Enviado em 29/10/2012 - 11:45h

rai3mb escreveu:

Selecione os id da tabela B enquanto nao existirem na tabela A

SELECT b.id FROM tabelaB b, tabelaA a
WHERE b.id != a.id


Ai ficaria:


INSERT INTO bancoA.tabelaA AS select * FROM tabelaB b, tabelaA a WHERE b.id != a.id



rai3mb,
seguindo o que me passou consegui fazer. Ficou assim:

INSERT INTO bancoA.tabelaA
(select * from bancoB.tabelaB As B
where not EXISTS (select * from bancoA.tabelaA As A
where A.id = B.id));

Mas infelizmente esta dando um erro de chave estrangeira. Erro que me persegue. Mas isto é outro assunto. Obrigado pela resposta, graças a ela pude aprender bem mais.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts