Voici le modèle relationnel de la base de données avec les clés primaires soulignées et les clés étrangères en italique :
CLIENTS (ID_Client, Nom, Prenom, Email, DateInscription)
LIVRES (ISBN, Titre, Auteur, Prix, Stock, ID_Categorie)
CATEGORIES (ID_Categorie, NomCategorie)
COMMANDES (ID_Commande, ID_Client, DateCommande, Statut)
DETAILS_COMMANDE (ID_Commande, ISBN, Quantite, PrixUnitaire)
Légende :
Notes sur les relations :
SELECT Titre, Prix
FROM LIVRES
WHERE Prix > 15;
SELECT Nom, Prenom
FROM CLIENTS
WHERE YEAR(DateInscription) = 2023;
SELECT L.Titre, C.NomCategorie
FROM LIVRES L
JOIN CATEGORIES C ON L.ID_Categorie = C.ID_Categorie;
SELECT C.NomCategorie, COUNT(*) AS NombreLivres
FROM LIVRES L
JOIN CATEGORIES C ON L.ID_Categorie = C.ID_Categorie
GROUP BY C.ID_Categorie, C.NomCategorie;
SELECT Titre, Prix
FROM LIVRES
ORDER BY Prix DESC
LIMIT 5;
SELECT DISTINCT C.Nom, C.Prenom
FROM CLIENTS C
JOIN COMMANDES CO ON C.ID_Client = CO.ID_Client
WHERE YEAR(CO.DateCommande) = 2024;
SELECT CO.ID_Commande, SUM(DC.Quantite * DC.PrixUnitaire) AS MontantTotal
FROM COMMANDES CO
JOIN DETAILS_COMMANDE DC ON CO.ID_Commande = DC.ID_Commande
GROUP BY CO.ID_Commande;
SELECT L.Titre
FROM LIVRES L
LEFT JOIN DETAILS_COMMANDE DC ON L.ISBN = DC.ISBN
WHERE DC.ISBN IS NULL;
SELECT C.Nom, C.Prenom, SUM(DC.Quantite * DC.PrixUnitaire) AS MontantTotal
FROM CLIENTS C
JOIN COMMANDES CO ON C.ID_Client = CO.ID_Client
JOIN DETAILS_COMMANDE DC ON CO.ID_Commande = DC.ID_Commande
GROUP BY C.ID_Client, C.Nom, C.Prenom
ORDER BY MontantTotal DESC
LIMIT 1;
SELECT C.NomCategorie, COUNT(*) AS NombreLivres
FROM CATEGORIES C
JOIN LIVRES L ON C.ID_Categorie = L.ID_Categorie
WHERE L.Stock < 10
GROUP BY C.ID_Categorie, C.NomCategorie
HAVING COUNT(*) > 5;
SELECT Titre, Prix
FROM LIVRES
WHERE Prix > 15;
SELECT Nom, Prenom
FROM CLIENTS
WHERE YEAR(DateInscription) = 2023;
SELECT L.Titre, C.NomCategorie
FROM LIVRES L, CATEGORIES C
WHERE L.ID_Categorie = C.ID_Categorie;
SELECT C.NomCategorie, COUNT(*) AS NombreLivres
FROM LIVRES L, CATEGORIES C
WHERE L.ID_Categorie = C.ID_Categorie
GROUP BY C.ID_Categorie, C.NomCategorie;
SELECT Titre, Prix
FROM LIVRES
ORDER BY Prix DESC
LIMIT 5;
SELECT DISTINCT C.Nom, C.Prenom
FROM CLIENTS C, COMMANDES CO
WHERE C.ID_Client = CO.ID_Client
AND YEAR(CO.DateCommande) = 2024;
SELECT CO.ID_Commande, SUM(DC.Quantite * DC.PrixUnitaire) AS MontantTotal
FROM COMMANDES CO, DETAILS_COMMANDE DC
WHERE CO.ID_Commande = DC.ID_Commande
GROUP BY CO.ID_Commande;
SELECT L.Titre
FROM LIVRES L
WHERE L.ISBN NOT IN (SELECT ISBN FROM DETAILS_COMMANDE);
SELECT C.Nom, C.Prenom, SUM(DC.Quantite * DC.PrixUnitaire) AS MontantTotal
FROM CLIENTS C, COMMANDES CO, DETAILS_COMMANDE DC
WHERE C.ID_Client = CO.ID_Client
AND CO.ID_Commande = DC.ID_Commande
GROUP BY C.ID_Client, C.Nom, C.Prenom
ORDER BY MontantTotal DESC
LIMIT 1;
SELECT C.NomCategorie, COUNT(*) AS NombreLivres
FROM CATEGORIES C, LIVRES L
WHERE C.ID_Categorie = L.ID_Categorie
AND L.Stock < 10
GROUP BY C.ID_Categorie, C.NomCategorie
HAVING COUNT(*) > 5;