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` = 'Muriel'
AND `password` = SHA1("test11")
2. Obtenir la liste de tous les produits qui sont présent sur plusieurs
commandes.
SELECT nom, COUNT(*) AS nbr_items
FROM `commande_ligne`
GROUP BY nom
HAVING nbr_items > 1
ORDER BY nbr_items DESC
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 nbr_pr FROM `commande_ligne`
GROUP BY nom
HAVING nbr_pr>1
ORDER BY nbr_pr DESC
GROUP BY Pour obtenir le coût total de chaque client en regroupant les commandes des
mêmes clients. ’éviter la répétition’
HAVING les clients qui ont le nbr >1
ORDER BY : trier en ordre ASC ou desc
4. Enregistrer le prix total à l’intérieur de chaque ligne des commandes, en
fonction du prix unitaire et de la quantité
Calcule du prix_total = quantite` * `prix_unitaire
UPDATE `commande_ligne` SET `prix_total` = ( `quantite` * `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 [Link], [Link], commande.date_achat, commande_id, SUM( prix_total )
AS prix_cmd FROM `commande_ligne`
LEFT JOIN commande ON [Link] = commande_ligne.commande_id
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY `commande_id`
6. Enregistrer le montant total de chaque commande dans le champ intitulé
“cache_prix_total”
UPDATE commande AS t1 INNER JOIN (
SELECT commande_id, SUM( commande_ligne.prix_total ) AS p_total
FROM commande_ligne
GROUP BY commande_id)t2 ON [Link] = t2.commande_id
SET t1.cache_prix_total = t2.p_total
7. Obtenir le montant global de toutes les commandes, pour chaque
mois
SELECT YEAR( `date_achat` ) , MONTH( `date_achat` ) , SUM( `cache_prix_total` )
FROM commande
GROUP BY YEAR( `date_achat` ) , MONTH( `date_achat` )
ORDER BY YEAR( `date_achat` ) , MONTH( `date_achat` )
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 [Link], [Link], SUM( commande.cache_prix_total ) AS montant_total
FROM `commande`
LEFT JOIN client ON [Link] = commande.client_id
GROUP BY commande.client_id
ORDER BY montant_total DESC
9. Obtenir le montant total des commandes pour chaque date
SELECT `date_achat` , SUM( cache_prix_total ) AS Montant_total
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 `category` TINYINT UNSIGNED NOT NULL AFTER
`cache_prix_total`;
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 THEN 1
WHEN cache_prix_total<500 THEN 2
WHEN cache_prix_total<1000 THEN 3
ELSE 4
END )