Usuário com melhor resposta
Ajuda com Query

Pergunta
-
Olá a todos,
como construo uma query que seleccione registos duma tabela e os insira ou actualize noutra tabela conforme uma dada condição se verifique ou não, ou seja precisava de algo do genero :
if exists (select CodPostal FROM CodigoPostal where CodPostal=i.codPostal)
UPDATE CodigoPostal SET DesignPostal=i.designPostal WHERE codPostal=i.codPostal
else
INSERT INTO CodigoPostal (CodPostal,DesignPostal) VALUES (i.codPostal ,i.designPostal)
select * from tempCodPost i
Respostas
-
Veja se assim ajuda:
Create Table Exemplo_1 (chave int, codigo int)
Create Table Exemplo_2 (chave int, codigo int)Insert Into Exemplo_1 (chave, codigo)
Select Exemplo_2.chave, Exemplo_2.codigo From Exemplo_2 Left Join Exemplo_1 On Exemplo_1.Chave= Exemplo_2.Chave
Where Exemplo_1.chave Is nullUpdate Exemplo_1 Set codigo = Exemplo_2.codigo
From Exemplo_1
Inner Join Exemplo_2 On Exemplo_1.Chave= Exemplo_2.Chavevc. nao precisa contar se existe ou nao apenas execute em sequencia primeiro o insert depois o update.
Abs;
Todas as Respostas
-
Tente isso:
if (select count(1) from TempCodigoPostal i
inner join CodPostal a on a.CodPostal = i.CodPostal ) > 0
begin
update CodigoPostal set DesignPostal=i.DesignPostal from CodigoPostal a
inner join TempCodigoPostal i on i.CodPostal = a.CodPostal
end
else
begin
insert into codigopostal (codpostal,designpostal)
select i.codpostal ,i.designpostal from tempcodpost i
endEspero ter ajudado
-
-
Ezirraffner,
obrigado pela dica mas não é bem isso que pretendia.
O que pretendia era algo parecido com isso mas que para cada registo do tempCodPost fizesse o teste. Assim como sugeriste caso exista registos comuns na tabela tempCodPost e CodigoPostal , apenas actualiza esses valores e nao insere os restantes que nao existem.
O que pretendia era que inserisse os dados que tem na tempCodPost e nao estão na CodigoPostal e que actualizasse os restantes dados que fossem comuns as duas tabelas -
Veja se assim ajuda:
Create Table Exemplo_1 (chave int, codigo int)
Create Table Exemplo_2 (chave int, codigo int)Insert Into Exemplo_1 (chave, codigo)
Select Exemplo_2.chave, Exemplo_2.codigo From Exemplo_2 Left Join Exemplo_1 On Exemplo_1.Chave= Exemplo_2.Chave
Where Exemplo_1.chave Is nullUpdate Exemplo_1 Set codigo = Exemplo_2.codigo
From Exemplo_1
Inner Join Exemplo_2 On Exemplo_1.Chave= Exemplo_2.Chavevc. nao precisa contar se existe ou nao apenas execute em sequencia primeiro o insert depois o update.
Abs;
-