Fórum como dar update em uma coluna de uma tabela x pegando os valores de uma tabela y #474292

27/03/2014

0

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

Responder

Posts

01/04/2014

Valquiria Silva

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
Responder

Gostei + 0

02/04/2014

Ronald Santos

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
Responder

Gostei + 0

02/04/2014

Valquiria Silva

Olá Ronald

Entendi,

como você fez também funciona.


Abraço.



Responder

Gostei + 0

02/04/2014

Ronald Santos

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.



Responder

Gostei + 0

02/04/2014

Valquiria Silva

Que erro vc recebe?

e qual versão do firebird esta usando?
Responder

Gostei + 0

03/04/2014

Ronald Santos

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?
Responder

Gostei + 0

03/04/2014

Valquiria Silva

faltam parenteses
assim

update tabelax set colunax = (select colunay from tabela where idy=idx)
Responder

Gostei + 0

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

Aceitar