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 client WHERE prenom LIKE 'Muriel' AND password LIKE SHA1('test11');
2 - Obtenir la liste de tous les produits qui sont présent sur plusieurs commandes.
SELECT nom, count(*) as nb_produit FROM commande_ligne GROUP BY nom HAVING
nb_produit > 1
3 - Obtenir la liste de tous les produits qui sont présent sur plusieurs commandes
et y ajouter une colonne qui liste les identifiants des commandes associées.
SELECT nom, count(*) as nb_produit, GROUP_CONCAT(commande_id) as commandes FROM
commande_ligne cl
LEFT JOIN commande cm ON cl.commande_id = cm.id GROUP BY nom HAVING nb_produit > 1;
4 - Enregistrer le prix total à l’intérieur de chaque ligne des commandes, en
fonction du prix unitaire et de la quantité
UPDATE commande_ligne
SET prix_total = prix_unitaire * quantite
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 SUM(prix_total) as montant_total,date_achat, CONCAT(prenom,' ',ct.nom) as
nom_complet, commande_id
FROM commande_ligne cl
LEFT JOIN commande cm
ON cl.commande_id = cm.id
LEFT JOIN client ct
ON cm.client_id = ct.id
GROUP BY commande_id
6- Enregistrer le montant total de chaque commande dans le champ intitulé
“cache_prix_total”
UPDATE commande cm
SET cache_prix_total = (SELECT SUM(prix_total) FROM commande_ligne cl WHERE cm.id =
cl.commande_id);
7- Obtenir le montant global de toutes les commandes, pour chaque mois
SELECT SUM(cache_prix_total), MONTH(date_achat) as each_month, YEAR(date_achat) as
each_year
FROM commande
GROUP BY each_month,each_year
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 SUM(prix_total) as montant_total, cm.client_id, CONCAT(prenom, ' ', ct.nom)
as costumer
FROM commande_ligne cl
LEFT JOIN commande cm
ON cl.commande_id = cm.id
LEFT JOIN client ct
ON cm.client_id = ct.id
GROUP BY cm.client_id
ORDER BY montant_total desc
LIMIT 10
9 - Obtenir le montant total des commandes pour chaque date
SELECT SUM(cache_prix_total) as montant_total,date_achat FROM commande GROUP BY
date_achat;
10 - Ajouter une colonne intitulée “category” à la table contenant les commandes.
Cette colonne contiendra une valeur numérique
ALTER TABLE commande ADD COLUMN category INT
11 - Enregistrer la valeur de la catégorie, en suivant les règles suivantes :
“1” pour les commandes de moins de 200€
“2” pour les commandes entre 200€ et 500€
“3” pour les commandes entre 500€ et 1.000€
“4” pour les commandes supérieures à 1.000€
UPDATE commande
SET category =
CASE
WHEN cache_prix_total < 200.00 THEN 1
WHEN 200.00 < cache_prix_total< 500.00 THEN 2
WHEN 500.00 < cache_prix_total< 1000.00 THEN 3
WHEN cache_prix_total > 1000.00 THEN 4
END
12 - Supprimer toutes les commandes (et les lignes des commandes) inférieur au 1er
février 2019. Cela doit être effectué en 2 requêtes maximum7
DELETE commande, commande_ligne FROM commande
JOIN commande_ligne
ON commande.id = commande_ligne.commande_id
WHERE date_achat < "2019-02-01"