0% ont trouvé ce document utile (0 vote)
88 vues2 pages

Requêtes SQL pour Gestion de Commandes et Clients

Ce document contient 12 requêtes SQL pour interroger et mettre à jour une base de données e-commerce. Les requêtes obtiennent des données sur les clients, produits, commandes et effectuent des mises à jour et agrégations.

Transféré par

Meriem Otman
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
88 vues2 pages

Requêtes SQL pour Gestion de Commandes et Clients

Ce document contient 12 requêtes SQL pour interroger et mettre à jour une base de données e-commerce. Les requêtes obtiennent des données sur les clients, produits, commandes et effectuent des mises à jour et agrégations.

Transféré par

Meriem Otman
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

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"

Vous aimerez peut-être aussi