Update com subselect no firebird
18/07/2017
0
Boa tarde pessoal estou com um problema para atualizar uma tabela no firebird. O problema é que preciso pegar os dados de outra tabela para atualizar a que quero.
Fiz através de subselect mas além de não atualizar, apaga os dados da tabela de onde estou buscando os dados.
Olha como estou fazendo:
update itenspedido set itenspedido.custo = (select precos.custo from precos where precos.item = 1)
No caso esse produto na tabela preço está com valor de 5,00, mas quando executo esse update ele passa a ficar 0,00 na tabela preco e a tabela itenspedido não altera.
Fiz através de subselect mas além de não atualizar, apaga os dados da tabela de onde estou buscando os dados.
Olha como estou fazendo:
update itenspedido set itenspedido.custo = (select precos.custo from precos where precos.item = 1)
No caso esse produto na tabela preço está com valor de 5,00, mas quando executo esse update ele passa a ficar 0,00 na tabela preco e a tabela itenspedido não altera.
Ederson
Curtir tópico
+ 0
Responder
Posts
15/08/2017
Douglas Souza
Meu caro, boa tarde.
O update que você está realizando considera que todas as linhas da tabela "itenspedido" serão afetadas pela atualização do seu subselect que provavelmente tem seu retorno como 0. Ou seja, a coluna custo receberá o valor de seu subselect e será sempre o mesmo valor para todas as linhas de sua tabela "itenspedido".
É interessante você postar a relação entre as tabelas itenspedido e preco, pois assim fica mais fácil de demonstrar como você pode resolver o problema ;)
Um forte abraço.
Att, Douglas Claudio.
O update que você está realizando considera que todas as linhas da tabela "itenspedido" serão afetadas pela atualização do seu subselect que provavelmente tem seu retorno como 0. Ou seja, a coluna custo receberá o valor de seu subselect e será sempre o mesmo valor para todas as linhas de sua tabela "itenspedido".
É interessante você postar a relação entre as tabelas itenspedido e preco, pois assim fica mais fácil de demonstrar como você pode resolver o problema ;)
Um forte abraço.
Att, Douglas Claudio.
Responder
Clique aqui para fazer login e interagir na Comunidade :)