Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fvieirars

Problema com SUBSELECT

Recommended Posts

Ola estou com problemas para fazer estorno de estoque , criei uma trigger com o seguinte formato:

 

update produtos

set produtos.estoque = produtos.estoque + (select quantidade

from vendas_produto

where vendas_produto.codigo_venda = OLD.codigo)

where produtos.codigo=(select distinct codigo_produto

from vendas_produto

where vendas_produto.codigo_venda = OLD.codigo)

 

ela funciona apenas quando existe somente um produto na venda, se existir mais de um produto ela gera esta exception:

 

java.sql.SQLException: Subquery returns more than 1 row

 

algum tem ideia de como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente com "In" e "sum"

 

update produtos
set produtos.estoque = produtos.estoque + (select sum (quantidade)
from vendas_produto
where vendas_produto.codigo_venda = OLD.codigo)

where produtos.codigo in (select distinct codigo_produto
from vendas_produto
where vendas_produto.codigo_venda = OLD.codigo)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente com "In" e "sum"

 

update produtos

set produtos.estoque = produtos.estoque + (select sum (quantidade)

from vendas_produto

where vendas_produto.codigo_venda = OLD.codigo)

where produtos.codigo in (select distinct codigo_produto

from vendas_produto

where vendas_produto.codigo_venda = OLD.codigo)

Motta agora gerou esta exceção,com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: FUNCTION sisvendas.sum does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvi o problema era so colocar limit valeu pela atenção :

update produtos

set produtos.estoque = produtos.estoque + (select quantidade
from vendas_produto
where vendas_produto.codigo_venda = OLD.codigo limit 1)

where produtos.codigo=(select distinct codigo_produto
from vendas_produto
where vendas_produto.codigo_venda = OLD.codigo limit 1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.