huarlem Posted April 13, 2015 Report Share Posted April 13, 2015 Bom dia, Estou precisando fazer uma consulta que me retorne o estoque atual dos produtos ( soma das vendas - estoque inicial) Tenho as tabelas Produto (Id, Nome, EstoqueInicial) e Vendas (Id, ProdutoId, Quantidade) Preciso somar as quantidades de cada produto na tabela vendas para diminuir do EstoqueIncial. Alguém sabe como fazer isso utilizando uma consulta SQL? Quote Link to comment Share on other sites More sharing options...
0 wootzor Posted April 13, 2015 Report Share Posted April 13, 2015 (edited) EDIT: Peço desculpa mas só depois reparei que isto está na secção de SQL Server e não de MySQL. De qualquer forma, espero que possa ser útil, embora a sintaxe seja diferente. Aconselho a ler algo sobre triggers. Em vez de tentar "reinventar a roda", podes utilizar um trigger, que existe precisamente para operações semelhantes à que pretendes. Aqui tens um exemplo: CREATE TABLE `Produto` ( `Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `Nome` VARCHAR(50) NOT NULL, `Stock` INT NOT NULL ); CREATE TABLE `Venda` ( `Id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `ProdutoId` INT NOT NULL, `Quantidade` INT NOT NULL, FOREIGN KEY (`ProdutoId`) REFERENCES Produto(`Id`) ); -- Inserir dados na tabela `Produto` INSERT INTO `Produto` (`Nome`, `Stock`) VALUES ("Produto A", 100), ("Produto B", 200); -- Criar trigger para actualizar automaticamente o stock disponível em função das vendas. CREATE TRIGGER `tgVendas` AFTER INSERT ON `Venda` FOR EACH ROW UPDATE `Produto` SET `Stock` = (`Stock` - NEW.Quantidade); -- Testar o trigger criado INSERT INTO `Venda` (`ProdutoId`, `Quantidade`) VALUES (1, 5), (2,10); Edited April 13, 2015 by wootzor Quote Link to comment Share on other sites More sharing options...
Question
huarlem
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.