--1 Obtenir l’utilisateur ayant le prénom “Muriel” et le mot de passe “test11”, sachant que l’encodage du mot de passe est effectué avec l’algorithme Sha1. SELECT * FROM clients C WHERE C.client_prenom = 'Muriel' AND C.client_password = SHA1('test11'); ; --2 Obtenir la liste de tous les produits qui sont présents sur plusieurs commandes, avec, pour chaque produit, le nombre de fois où ils sont présents. SELECT CL.commande_ligne_nom, COUNT(*) as frequence FROM commandes_lignes CL GROUP BY CL.commande_ligne_nom HAVING COUNT(*) > 1 ORDER BY frequence DESC ; --3 Obtenir la liste de tous les produits qui sont présents sur plusieurs commandes et y ajouter une colonne qui liste les identifiants des commandes associées. SELECT C.commande_ligne_nom, GROUP_CONCAT(C.commande_id) AS les_commandes FROM commandes_lignes C WHERE C.commande_ligne_nom IN ( SELECT CL.commande_ligne_nom FROM commandes_lignes CL GROUP BY CL.commande_ligne_nom HAVING COUNT(*) > 1 ) GROUP BY commande_ligne_nom ; --4 Enregistrer le prix total à l’intérieur de chaque ligne des commandes, en fonction du prix unitaire et de la quantité. UPDATE commandes_lignes C SET ROUND(C.commande_ligne_prix_total,2) = C.commande_ligne_quantite * C.commande_ligne_prix_unitaire ; --5 Obtenir le montant total pour chaque commande et y voir facilement la date associée à cette commande ainsi que le prénom et nom du client associé. SELECT C.commande_date_achat, CL.client_prenom, CL.client_nom, ROUND(SUM(CML.commande_ligne_prix_total),2) AS commande_total FROM commandes C JOIN clients CL ON C.client_id = CL.client_id JOIN commandes_lignes CML ON C.commande_id = CML.commande_id GROUP BY C.commande_id ; --6 Enregistrer le montant total de chaque commande dans le champ intitulé “cache_prix_total”. UPDATE commandes C JOIN ( SELECT commande_id, SUM(commande_ligne_prix_total) AS commande_total FROM commandes_lignes GROUP BY commande_id ) CL ON C.commande_id = CL.commande_id SET C.commande_cache_prix_total = ROUND(CL.commande_total,2) ; --7 Obtenir le montant global de toutes les commandes, pour chaque mois. SELECT MONTH(C.commande_date_achat) AS mois, YEAR(C.commande_date_achat) AS annee, ROUND(SUM(C.commande_cache_prix_total),2) AS montant_global FROM commandes C GROUP BY annee, mois ; --8 Obtenir la liste des 10 clients qui ont effectué le plus grand montant de commandes, et obtenir ce montant total pour chaque client. SELECT CL.client_id, CL.client_prenom, CL.client_nom, ROUND(SUM(C.commande_cache_prix_total), 2) AS total_commandes FROM commandes C JOIN clients CL ON C.client_id = CL.client_id GROUP BY CL.client_id ORDER BY total_commandes DESC LIMIT 10 ; --9 Obtenir le montant total des commandes pour chaque date. SELECT DATE_FORMAT(C.commande_date_achat, "%d/%m/%Y") AS la_date, ROUND(SUM(C.commande_cache_prix_total),2) AS montant_journalier FROM commandes C GROUP BY la_date ; ---trigger 7 DELIMITER // CREATE TRIGGER before_insert_commandes_lignes BEFORE INSERT ON commandes_lignes FOR EACH ROW BEGIN SET NEW.commande_ligne_prix_total = NEW.commande_ligne_quantite * NEW.commande_ligne_prix_unitaire; END // DELIMITER ; DELIMITER // CREATE TRIGGER before_update_commandes_lignes BEFORE UPDATE ON commandes_lignes FOR EACH ROW BEGIN SET NEW.commande_ligne_prix_total = NEW.commande_ligne_quantite * NEW.commande_ligne_prix_unitaire; END // DELIMITER ;