como dar update em uma coluna de uma tabela x pegando os valores de uma tabela y

Firebird

27/03/2014

Boa tarde
Eu estou precisando dar um UPDATE em uma coluna de uma tabela x setando todos os registros dessa coluna da tabela x igual a coluna da tabela y??
é possível fazer isso???
Ronald Santos

Ronald Santos

Curtidas 0

Respostas

Valquiria Silva

Valquiria Silva

27/03/2014

Boa tarde.

Primeiro os campos nas duas tabela devem compatíveis(deve ter o mesmo tipo e tamanho) ou será necessário fazer um cast.

Vejo dois caminhos possíveis:
1 - fazer uma procedure

create procedure PROCEDURE
as
declare variable XCOLUNA;
begin
for select COLUNAY -- coluna da tabela que vc quer pegar os dados
from TABELAY
into :XCOLUNA --- variavel
do
update TABELAX set COLUNAX = :XCOLUNA where ***; --- aqui vc tem que definir um where
--- senão todos os registro da tabela X ficarão com o mesmo valor
suspend;
end



2 - Registro a registro assim

update TABELAX set COLUNAX = (select COLUNAY from TABELAY where id_y=1)
where id_X=1
GOSTEI 0
Ronald Santos

Ronald Santos

27/03/2014

Valquiria Silva
Muito obrigado pelas dicas eu irei fazer o teste eu havia tentado daseguinte forma
update tabelax set colunax = select colunay from tabela where idy=idx

A tabelax é ligada a tabelay pelo ID e assim queria pegar todos os registros que tivessem o mesmo id!
Mas muito obrigado eu irei testar das duas formas e assim que terminar eu lhe darei um retorno.
Boa tarde.

Primeiro os campos nas duas tabela devem compatíveis(deve ter o mesmo tipo e tamanho) ou será necessário fazer um cast.

Vejo dois caminhos possíveis:
1 - fazer uma procedure

create procedure PROCEDURE
as
declare variable XCOLUNA;
begin
for select COLUNAY -- coluna da tabela que vc quer pegar os dados
from TABELAY
into :XCOLUNA --- variavel
do
update TABELAX set COLUNAX = :XCOLUNA where ***; --- aqui vc tem que definir um where
--- senão todos os registro da tabela X ficarão com o mesmo valor
suspend;
end



2 - Registro a registro assim

update TABELAX set COLUNAX = (select COLUNAY from TABELAY where id_y=1)
where id_X=1
GOSTEI 0
Valquiria Silva

Valquiria Silva

27/03/2014

Olá Ronald

Entendi,

como você fez também funciona.


Abraço.



GOSTEI 0
Ronald Santos

Ronald Santos

27/03/2014

Boa tarde Valquiria Silva
Eu tentei daquela forma que lhe mostrei mas deu erro!
Olá Ronald

Entendi,

como você fez também funciona.


Abraço.



GOSTEI 0
Valquiria Silva

Valquiria Silva

27/03/2014

Que erro vc recebe?

e qual versão do firebird esta usando?
GOSTEI 0
Ronald Santos

Ronald Santos

27/03/2014

Invalid token

Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 31
select

acima está o erro que recebo na saida do comando
Que erro vc recebe?

e qual versão do firebird esta usando?
GOSTEI 0
Valquiria Silva

Valquiria Silva

27/03/2014

faltam parenteses
assim

update tabelax set colunax = (select colunay from tabela where idy=idx)
GOSTEI 0
POSTAR