Duvida Sentença sql
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
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
Curtidas 0
Melhor post
Marcos P
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
Dê uma olhada em : https://www.devmedia.com.br/forum/fazer-um-update-usando-um-select-no-firebird/488059
GOSTEI 2
Mais Respostas
Marcio Passos
20/03/2015
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
Mas de qualquer forma agradeço pela atenção
GOSTEI 0
Marcos P
20/03/2015
Pense o seguinte...
Quando você faz :
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 :
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 ?!?
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
Marcos P
20/03/2015
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 )
GOSTEI 0
Marcio Passos
20/03/2015
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.
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