Pedro Henrique Rodrigues Postado Dezembro 5, 2018 Denunciar Share Postado Dezembro 5, 2018 Olá !!! Preciso de fazer uma validação no banco de dados que envolvem 5 tabelas. A validação é para modificar automaticamente o status do cliente no sistema conforme o seu estado. Por exemplo: Status 01: Se cliente não possui pedidos um status. Status 02: Se possui pedidos ele tem um status. Status 03: Se possui produtos vencendo outro status Status 04: Se possui produtos vencidos outro status. Será realizada uma vez ao dia para não pesar o banco de dados, porém já estou a dois dias tentando elaborar essa procedure e não chego a lugar nenhum. Tenho as seguintes tabelas no banco: Cliente Pedido Item_Pedido Produto Status_Cliente (Esta tabela será modificada) Alguém me sugere uma solução mais rápida? Observação: Sistema desenvolvido em C#. Grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Leonardo Persan Postado Dezembro 18, 2018 Denunciar Share Postado Dezembro 18, 2018 Tenta algo assim DELIMITER $$ CREATE PROCEDURE Set_Status_Clientes() BEGIN FOR SELECT c.id INTO @cliente, COUNT(p.id) INTO @pedidos FROM Cliente c LEFT JOIN Pedido AS p ON p.cliente_id = c.id GROUP BY c.id DO IF (@pedidos > 0) THEN UPDATE Cliente SET status = 'sem_pedidos' WHERE id = @cliente ELSE UPDATE Cliente SET status = 'com_pedidos' WHERE id = @cliente SELECT COUNT(p.id) INTO @produtos_vencendo FROM Cliente c INNER JOIN Pedido AS p ON p.cliente_id = c.id INNER JOIN Item_Pedido AS ip ON ip.pedido_id = p.id AND ip.validade BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 5 DAY) WHERE c.id = @cliente IF (@produtos_vencendo > 0) THEN UPDATE Cliente SET status = 'produtos_vencendo' WHERE id = @cliente END IF; SELECT COUNT(p.id) INTO @produtos_vencidos FROM Cliente c INNER JOIN Pedido AS p ON p.cliente_id = c.id INNER JOIN Item_Pedido AS ip ON ip.pedido_id = p.id AND ip.validade < NOW() WHERE c.id = @cliente IF (@produtos_vencidos > 0) THEN UPDATE Cliente SET status = 'produtos_vencidos' WHERE id = @cliente END IF; END IF; END FOR; END $$ DELIMITER ; Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Pedro Henrique Rodrigues
Olá !!!
Preciso de fazer uma validação no banco de dados que envolvem 5 tabelas.
A validação é para modificar automaticamente o status do cliente no sistema conforme o seu estado.
Por exemplo:
Será realizada uma vez ao dia para não pesar o banco de dados, porém já estou a dois dias tentando elaborar essa procedure e não chego a lugar nenhum.
Tenho as seguintes tabelas no banco:
Cliente
Pedido
Item_Pedido
Produto
Status_Cliente (Esta tabela será modificada)
Alguém me sugere uma solução mais rápida?
Observação: Sistema desenvolvido em C#.
Grato.
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.