Fórum Duvida Sentença sql #514328
20/03/2015
0
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
Curtir tópico
+ 0Post mais votado
20/03/2015
Dê uma olhada em : https://www.devmedia.com.br/forum/fazer-um-update-usando-um-select-no-firebird/488059
Marcos P
Gostei + 2
Mais Posts
23/03/2015
Marcio Passos
Mas de qualquer forma agradeço pela atenção
Gostei + 0
23/03/2015
Marcos P
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 ?!?
Gostei + 2
23/03/2015
Marcos P
update ESTOQUE set PRECO_CUSTO = ADIC.CUSTO_MEDIO FROM ESTOQUE EST INNER JOIN EST_ADICIONAIS ADIC ON ( EST.ID_MATERIAL = ADIC.ID_MATERIAL )
Gostei + 0
23/03/2015
Marcio Passos
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.
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)