EXERCICE D’APPLICATION – LANGAGE SQL
1. La liste des vendeurs
SELECT *
FROM Vendeur;
2. La liste des potentiels acheteurs
SELECT *
FROM Acheteur;
3. La liste de tous les articles d’une boutique
SELECT Articles.*
FROM Articles
LEFT JOIN Boutique ON Articles.ninea = Boutique.ninea;
4. La liste de toutes les boutiques
SELECT *
FROM Boutique;
5. Les articles qui ont été achetés
SELECT DISTINCT Articles.*
FROM Articles
LEFT JOIN Achat ON Articles.numArt = Achat.numArt
WHERE Achat.numArt IS NOT NULL;
6. Les articles vendus
SELECT DISTINCT Articles.*
FROM Articles
RIGHT JOIN Vente ON Articles.numArt = Vente.numArt;
7. Les articles achetés et vendus par la même personne
SELECT DISTINCT Articles.*
FROM Articles
LEFT JOIN Achat ON Articles.numArt = Achat.numArt
LEFT JOIN Vente ON Articles.numArt = Vente.numArt
WHERE Achat.idAcheteur = Vente.numVendeur;
8. Les vendeurs qui vendent les mêmes articles
SELECT v1.numVendeur, v2.numVendeur, Articles.numArt
FROM Vente v1
LEFT JOIN Vente v2 ON v1.numArt = v2.numArt AND v1.numVendeur <> v2.numVendeur
LEFT JOIN Articles ON v1.numArt = Articles.numArt
LIMIT 0, 25;
9. Les acheteurs habitant Pikine
SELECT *
FROM Acheteur
WHERE adresse LIKE '%Pikine%';
10. Les vendeurs et acheteurs ayant la même adresse
SELECT *
FROM Acheteur
LEFT JOIN Vendeur ON Acheteur.adresse = Vendeur.adresse;
11. Les articles dont le stock est inférieur à 10
SELECT *
FROM Articles
WHERE quantitéStock < 10;
12. Les articles achetés au vendeur Abdou Faye
SELECT DISTINCT Articles.*
FROM Articles
JOIN Vente ON Articles.numArt = Vente.numArt
JOIN Vendeur ON Vente.numVendeur = Vendeur.numVendeur
WHERE Vendeur.nom = 'Faye' AND Vendeur.prenom = 'Abdou';
13. Les articles achetés à la boutique 18 et dont le prix_unitaire est égale à 15 000
SELECT DISTINCT Articles.*
FROM Articles
LEFT JOIN Boutique ON Articles.ninea = Boutique.ninea
WHERE Boutique.ninea = 18 AND Articles.prix_unitaire = 15000;
14. Le vendeur Doudou Gueye qui a vendu l’article puce orange 4g, à l’acheteur
Alimatou BA
SELECT *
FROM Vente
LEFT JOIN Vendeur ON Vente.numVendeur = Vendeur.numVendeur
LEFT JOIN Acheteur ON Vente.idAcheteur = Acheteur.idAcheteur
LEFT JOIN Articles ON Vente.numArt = Articles.numArt
WHERE Vendeur.nom = 'Doudou' AND Vendeur.prenom = 'Gueye'
AND Acheteur.nom = 'Alimatou' AND Acheteur.prenom = 'BA'
AND Articles.designation = 'puce orange 4g';
15. Les boutiques situées dans la même zone que leurs acheteurs et vendeurs
SELECT DISTINCT Boutique.*
FROM Boutique
LEFT JOIN Vendeur ON Boutique.adresse = Vendeur.adresse
LEFT JOIN Acheteur ON Boutique.adresse = Acheteur.adresse;
16. Les Vendeurs portant le nom Diop
SELECT *
FROM Vendeur
WHERE nom LIKE '%Diop%';
17. Les achats dont le montant est compris entre 150 000 et 250 000
SELECT Achat.*, Articles.designation, Articles.prix_unitaire,
(CAST(Achat.quantite AS UNSIGNED) * CAST(Articles.prix_unitaire AS
UNSIGNED)) AS montant
FROM Achat
LEFT JOIN Articles ON Achat.numArt = Articles.numArt
WHERE (CAST(Achat.quantite AS UNSIGNED) * CAST(Articles.prix_unitaire AS
UNSIGNED)) BETWEEN 150000 AND 250000;
18. Les articles dont le nom commence par C ou O
SELECT *
FROM Articles
WHERE designation LIKE 'C%' OR designation LIKE 'O%';
19. Les boutiques dont le chiffre d’affaire dépasse 1 000 000
SELECT *
FROM Boutique
WHERE chiffreAffaire > 1000000;
20. Les boutiques qui ont vendu beaucoup plus d’articles
SELECT Boutique.*, COUNT(Articles.numArt) AS total_articles
FROM Boutique
RIGHT JOIN Articles ON Boutique.ninea = Articles.ninea
GROUP BY Boutique.ninea
ORDER BY total_articles DESC;