como dar update em uma coluna de uma tabela x pegando os valores de uma tabela y
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???
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
Curtidas 0
Respostas
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
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
27/03/2014
Valquiria Silva
Muito obrigado pelas dicas eu irei fazer o teste eu havia tentado daseguinte forma
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.
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
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
27/03/2014
Olá Ronald
Entendi,
como você fez também funciona.
Abraço.
Entendi,
como você fez também funciona.
Abraço.
GOSTEI 0
Ronald Santos
27/03/2014
Boa tarde Valquiria Silva
Eu tentei daquela forma que lhe mostrei mas deu erro!
Eu tentei daquela forma que lhe mostrei mas deu erro!
Olá Ronald
Entendi,
como você fez também funciona.
Abraço.
Entendi,
como você fez também funciona.
Abraço.
GOSTEI 0
Valquiria Silva
27/03/2014
Que erro vc recebe?
e qual versão do firebird esta usando?
e qual versão do firebird esta usando?
GOSTEI 0
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?
e qual versão do firebird esta usando?
GOSTEI 0
Valquiria Silva
27/03/2014
faltam parenteses
assim
update tabelax set colunax = (select colunay from tabela where idy=idx)
assim
update tabelax set colunax = (select colunay from tabela where idy=idx)
GOSTEI 0