Fórum Duvida Sentença sql #514328

20/03/2015

0

olá amigos , desculpa pela pergunta talvez idiota.Eu não sou programador , sou estudante de sistemas de informação e estou precisando atualizar o meu preco_custo da tabela estoque , porem quero puxar esses valores do custo_medio da tabela est_adicionais.(banco dados firebird)
estou usando :

update ESTOQUE set ESTOQUE.PRECO_CUSTO=(select EST_ADICIONAIS.CUSTO_MEDIO FROM EST_ADICIONAIS WHERE ESTOQUE.PRECO_CUSTO='0,00')

porem esta dando o erro 'Multiple rows in singleton select'

Se algum puder me ajudar ficarei muito agradecido
Obrigado pela atenção
Marcio Passos

Marcio Passos

Responder

Post mais votado

20/03/2015

Tem de existir uma ligação entre as duas tabelas ( suponho que o código de material ) para você conseguir relacionar as tabelas e fazer o update...

Dê uma olhada em : https://www.devmedia.com.br/forum/fazer-um-update-usando-um-select-no-firebird/488059

Marcos P

Marcos P
Responder

Gostei + 2

Mais Posts

23/03/2015

Marcio Passos

Obrigado Marcos pela ajuda, mas não deu certo pelo exemplo do link que você me mandou.
Mas de qualquer forma agradeço pela atenção
Responder

Gostei + 0

23/03/2015

Marcos P

Pense o seguinte...

Quando você faz :

update ESTOQUE set ESTOQUE.PRECO_CUSTO=(select EST_ADICIONAIS.CUSTO_MEDIO FROM EST_ADICIONAIS WHERE ESTOQUE.PRECO_CUSTO='0,00')


O "select" retorna diversos itens, pois existem vários registros com custo = 0

Não é isso que você precisa !

O que você precisa é que seja retornado o custo_medio do produto que está sendo atualizado na tabela de "ESTOQUE".

No Sql Server, seria algo como :

update ESTOQUE 
set PRECO_CUSTO = ADIC.CUSTO_MEDIO
FROM ESTOQUE EST INNER JOIN EST_ADICIONAIS ADIC ON ( EST.ID_MATERIAL = EST_ADICIONAIS.ID_MATERIAL )


Repare, mais uma vez, que você precisa de uma coluna comum ligando as duas tabelas. No exemplo acima, chamei essa chave de ID_MATERIAL.

Ajuste a sintaxe ao Firebird.

Ok ?!?
Responder

Gostei + 2

23/03/2015

Marcos P

Errei no alias da segunda tabela...

update ESTOQUE
set PRECO_CUSTO = ADIC.CUSTO_MEDIO
FROM ESTOQUE EST INNER JOIN EST_ADICIONAIS ADIC ON ( EST.ID_MATERIAL = ADIC.ID_MATERIAL )
Responder

Gostei + 0

23/03/2015

Marcio Passos

Entendi Marcos
eu não estava colocando essas colunas em comum mesmo não.
Fiz as alterações conforme você me sugeriu e Deu certinho.
Muito obrigado pela ajuda.
Responder

Gostei + 1

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

Aceitar