huarlem Postado Abril 13, 2015 Denunciar Share Postado Abril 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wootzor Postado Abril 13, 2015 Denunciar Share Postado Abril 13, 2015 (editado) 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); Editado Abril 13, 2015 por wootzor Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
huarlem
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.