Nous allons réaliser des recherches sur un système de gestion de clients et de commandes.
Pour cela nous allons créer une table pour enregistrer les clients, une table pour enregistrer les commandes et une table de détail des commandes.
En utilisant SQL, vous allez créer les tables suivantes en respectant à la lettre les instructions qui suivent.
Créer une table nommée 'client'
avec les champs suivants :
`id`
de type INTEGER, ne peut pas être vide. Ce champ sera la clé primaire et AUTOINCREMENT
`prenom`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`nom`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`email`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`ville`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`password`
de type varchar avec 255 caractères maxi, ne peut pas être vide
Créer une table nommée 'commande'
avec les champs suivants :
`id`
de type INTEGER, ne peut pas être vide. Ce champ sera la clé primaire et AUTOINCREMENT
`client_id`
de type int(10, ne peut pas être vide
`date_achat`
de type date, ne peut pas être vide
`reference`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`cache_prix_total`
de type float, ne peut pas être vide
Créer une table nommée 'commande_ligne'
avec les champs suivants :
`id`
de type INTEGER, ne peut pas être vide. Ce champ sera la clé primaire et AUTOINCREMENT
`commande_id`
de type int(10), ne peut pas être vide
`nom`
de type varchar avec 255 caractères maxi, ne peut pas être vide
`quantite`
de type int(10), ne peut pas être vide
`prix_unitaire`
de type float, ne peut pas être vide
`prix_total`
de type float, ne peut pas être vide
Télécharger les fichiers suivants pour remplir vos tables avec des données.
Ouvrez les fichers et récupérer le code SQL pour le coller dans votre invite de commande SQLite de Visual Studio Code.
SELECT nom, COUNT(*) AS nbr_items , GROUP_CONCAT(`commande_id`) AS liste_commandes
FROM `commande_ligne`
GROUP BY nom
HAVING nbr_items > 1
ORDER BY nbr_items DESC
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 t1.id = t2.commande_id
SET t1.cache_prix_total = t2.p_total
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`)
Pour vous aider à réviser et à mieux comprendre la conception des requêtes, je vous invite à consulter le fichier de correction des exercices après avoir étudier les questions.