Vous êtes sur la page 1sur 8

ETML-ES

Exercices Interactifs "marchandises"


Consigne
Utilisez le modèle de données ci-dessous pour rédiger vos réponses aux questions
qui suivent. Ces réponses seront constituées d'expressions en algèbre relationnel et
les requêtes SQL qui en découlent. Un fichier "9-E-BDON-Marchandises.sql" contient
les instructions nécessaires à la construction de la BD avec MariaDB. Il y a quelques
enregistrements de données pour aider à vérifier les réponses. Ces enregistrements
peuvent être avantageusement complétés pour aller plus loin dans les
vérifications …

Modèle de données

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 1 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

Questions
1.
Numéros et libellés des articles dont le stock est inférieur à 10 ?

R1=SELECTION(articles; STOCK<10)
Algr R2=PROJECTION(R1, noart, libelle)

SQL SELECT noart, libelle FROM articles WHERE stock<10;

noart libelle
102 Zip 250Mo USB
Réponse
103 App Photo Numerique
105 Cam Sony DCR
2.
Liste des libellés d'articles dont le prix d'inventaire est compris entre 100
et 300 ?

R1=SELECTION(articles; prixinvent>=100 et prixinvent<=300)


Algr R2=PROJECTION(R1; libelle)

SQL SELECT libelle FROM articles WHERE prixinvent BETWEEN 100 AND 300;

libelle
HP Deskjet 930C
Réponse
Scanner Epson Perfection
Zip 250Mo USB
3.
Liste des numéros et des noms des fournisseurs dont on ne connaît pas
l'adresse ?

R1=SELECTION(fournisseurs; adrfour est "non renseigné")


Algr R2=PROJECTION(R1; nofour, nomfour)

SQL SELECT nofour, nomfour FROM fournisseurs WHERE adrfour IS NULL;

nofour nomfour
Réponse
14 BUROTIC

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 2 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

4.
Liste des numéros et des noms des fournisseurs dont le nom commence
par "STE" ?

R1=SELECTION(fournisseurs; nomfour comme "STE%")


Algr R2=PROJECTION(R1; nofour, nomfour)

SQL SELECT nofour,nomfour FROM fournisseurs WHERE nomfour LIKE 'STE%';

nofour nomfour
10 STE LIGER
Réponse 12 STE IMPEC
13 STE LE DUC
18 STE PROTEC
5.
Noms et adresses des fournisseurs qui proposent des articles pour
lesquels le délai d'approvisionnement est supérieur à 20 jours ?
R1=SELECTION(acheter; delai>20)
Algr R2=JOINTURE(R1, fournisseurs; nofour)
R3=PROJECTION(R2, nomfour, adrfour, villefour)

SELECT nomfour, adrfour, villefour


SQL FROM fournisseurs F JOIN acheter A ON F.nofour=A.nofour
WHERE DELAI>20;

nomfour adrfour villefour


ORKIS 22 BLD DES BELGES RENNES
Réponse STE IMPEC 3 BIS IMPASSE DES CLERCS MARSEILLE
STE LE DUC 101 AVENUE MARECHAL FOCH BORDEAUX
KBSS 42 COURS VITTON LYON

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 3 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

6.
Nombre d'articles référencés ?

Algr NbArticles=CALCULER(articles; Comptage())

SQL SELECT COUNT(*) AS nbarticles FROM articles;

nbarticles
Réponse
9

7.
Quelle est la valeur du stock ?

Algr ValeurStock=CALCULER(articles; Somme(stock*prixinvent))

SQL SELECT SUM(stock*prixinvent) AS valeurstock FROM articles;

valeurstock
Réponse
24113.27

8.
Numéros et libellés des articles triés dans l'ordre décroissant des stocks ?

R1=PROJECTION(articles; noart, libelle, stock)


Algr R2=TRI(R1, stock décroissant)

SQL SELECT noart, libelle, stock FROM articles ORDER BY stock DESC ;

noart libelle stock


108 Papier couche 100 A4 110
106 Cableu USB 80
107 Hub 4 ports USB 35
Réponse
104 Fax Modem V92 20
101 Scanner Epson Perfection 12
100 HP Deskjet 930C 10
102 Zip 250Mo USB 8

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 4 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

103 App Photo Numerique 5


105 Cam Sony DCR 4

9.
Liste pour chaque article (numéro et libellé) du prix d'achat maximum,
minimum et moyen ?
R1=REGROUPER_ET_CALCULER(acheter; noart, PAmax : MAX(prixachat), PAmin :
MIN(prixachat), PAmoy : MOYENNE(prixachat))
Algr R2=JOINTURE(R1, articles; noart)
R3=PROJECTION(R2, noart, libelle, PAmax, PAmin, PAmoy)

SELECT A.noart, libelle, MAX(prixachat) AS Pmax, MIN(prixachat) AS Pmin,


SQL AVG(prixachat) AS Pmoy FROM acheter A JOIN articles B ON A.noart = B.noart GROUP
BY A.noart, libelle;

noart libelle Pmax Pmin Pmoy


100 HP Deskjet 930C 185.20 180.00 182.600000
101 Scanner Epson Perfection 150.20 140.00 145.100000
102 Zip 250Mo USB 260.50 260.50 260.500000
103 App Photo Numerique 835.00 835.00 835.000000
Réponse
104 Fax Modem V92 76.26 76.26 76.260000
105 Cam Sony DCR 2199.00 2199.00 2199.000000
106 Cableu USB 9.00 8.38 8.690000
107 Hub 4 ports USB 45.47 45.47 45.470000
108 Papier couche 100 A4 12.00 11.50 11.750000
10.
Délai moyen pour chaque fournisseur proposant au moins 2 articles ?
R1=REGROUPER_ET_CALCULER(acheter; nofour, Nb : Comptage(), DelaiMoyen :
MOYENNE(delai))
Algr R2=SELECTION(R1; Nb>=2)
R3=JOINTURE(R2; fournisseurs, nofour)
R4=PROJECTION(R3; nofour, nomfour, DelaiMoyen)

SELECT A.nofour, nomfour, AVG(DELAI) AS DelaiMoyen FROM acheter A JOIN


SQL fournisseurs F ON A.NOFOUR = F.NOFOUR GROUP BY A.nofour, nomfour HAVING
COUNT(*) >=2;

nofour nomfour DelaiMoyen


11 ORKIS 12.3333
Réponse 12 STE IMPEC 30.0000
14 BUROTIC 3.5000
15 KBSS 15.0000

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 5 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

11.
Prix minimum de chaque article avec le fournisseur correspondant
R1=REGROUPER_ET_CALCULER(acheter; noart, Minprix : MIN(prixachat))
R2=JOINTURE(R1, acheter; R1.noart=acheter.noart et R1.Minprix=acheter.prixachat)
Algr R3=JOINTURE(R2, fournisseurs, nofour)
R4=JOINTURE(R3, articles, noart)
R5=PROJECTION(R3, noart, libelle, nomfour, Minprix)
SELECT a.noart, libelle, nomfour, minprix FROM acheter a JOIN (select noart,
min(prixachat) as minprix from acheter group by noart) PMIN ON a.noart=PMIN.noart
SQL AND a.prixachat=PMIN.minprix JOIN fournisseurs f ON a.nofour=f.nofour JOIN articles l
ON a.noart=l.noart;

noart libelle nomfour minprix


100 HP Deskjet 930C KBSS 180.00
101 Scanner Epson Perfection ORKIS 140.00
102 Zip 250Mo USB BUROTIC 260.50
103 App Photo Numerique STE LE DUC 835.00
Réponse
104 Fax Modem V92 STE LIGER 76.26
105 Cam Sony DCR ORKIS 2199.00
106 Cableu USB STE IMPEC 8.38
107 Hub 4 ports USB KBSS 45.47
108 Papier couche 100 A4 ORKIS 11.50
12.
Fournisseurs auprès desquels on ne s'approvisionne plus et qu'il faudrait
donc peut-être supprimer de la table Fournisseurs
R1=PROJECTION(fournisseurs, nofour)
R2=PROJECTION(acheter, nofour)
R3=DIFFERENCE(R1, R2)
R4=JOINTURE(R3, fournisseurs, nofour)
Algr R5=PROJECTION(R4, nofour, nomfour, adrfour, villefour)
ou
R1=JOINTURE_GAUCHE(fournisseurs, acheter; nofour)
R2=SELECTION(R1, noart est NULL)
R3=PROJECTION(R2, nofour, nomfour, adrfour, villefour)

SELECT f.nofour, nomfour, adrfour, villefour FROM fournisseurs f LEFT JOIN acheter a on
SQL f.nofour=a.nofour WHERE a.noart IS NULL;

nofour nomfour adrfour villefour


17 PRINT42 32 AVENUE DES PLATANES VALENCE
Réponse
18 STE PROTEC 92 RUE DE LA REPUBLIQUE TOULOUSE
19 PIMS 50 BLD DES ALOUETTES GRENOBLE

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 6 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

13.
Quels sont les fournisseurs qui fournissent les 2 articles 100 et 106, et à
quel prix ?
R1=SELECTION(acheter, noart=100)
R2=SELECTION(acheter, noart=106)
Algr R3=JOINTURE(R1, R2, nofour)
R4=JOINTURE(R3, fournisseurs, nofour)
R5=PROJECTION(R4, nomfour, R1.prixachat, R2.prixachat)

SELECT nomfour, a.prixachat as Prix_100, b.prixachat as Prix_106 FROM acheter a join


SQL acheter b using(nofour) join fournisseurs using(nofour) WHERE a.noart=100 AND
b.noart=106;

nomfour Prix_100 Prix_106


Réponse STE IMPEC 185.20 8.38
KBSS 180.00 9.00
14.
Listes des articles pouvant être achetés chez plusieurs fournisseurs, avec
le prix d'achat et le délai correspondants
R1=ACHETER
R2=JOINTURE(R1, acheter; noart)
R3=SELECTION(R2; R1.nofour<>acheter.nofour)
Algr R4=JOINTURE(R3, fournisseurs; R1.nofour=fournisseurs.nofour)
R5=JOINTURE(R4, articles; R1.noart=acheter.noart)
R6=PROJECTION(R5, R1.noart, libelle, nomfour, R1.prixachat, R1.delai )

SELECT a.noart, libelle, nomfour, a.prixachat, a.delai FROM acheter a JOIN acheter b
SQL ON a.noart=b.noart JOIN fournisseurs f ON a.nofour=f.nofour JOIN articles l ON
a.noart=l.noart WHERE a.nofour<>b.nofour order by a.noart;

noart libelle nomfour prixachat delai


100 HP Deskjet 930C KBSS 180.00 23
100 HP Deskjet 930C STE IMPEC 185.20 40
101 Scanner Epson Perfection ORKIS 140.00 30
Réponse 101 Scanner Epson Perfection COOP ACHAT 150.20 17
106 Cableu USB KBSS 9.00 20
106 Cableu USB STE IMPEC 8.38 20
108 Papier couche 100 A4 BUROTIC 12.00 4
108 Papier couche 100 A4 ORKIS 11.50 5

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 7 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx
ETML-ES

15.
Quels sont le ou les fournisseurs qui fournissent le plus de produits ?
R1=REGROUPER_ET_CALCULER(acheter, nofour, Nb_prod : Comptage())
Max_prod=CALCULER(R1, MAX(Nb_prod))
R2=REGROUPER_ET_CALCULER(acheter, nofour, Nombre_produits : Comptage())
Algr R3=SELECTION(R2, Nombre_produits=Max_prod)
R4=JOINTURE(R3, fournisseurs, nofour)
R5=PROJECTION(R4, nofour, nomfour, Nombre_produits)

SELECT nofour, nomfour, count(*) as nombre_produits FROM fournisseurs join acheter


SQL using(nofour) GROUP BY nofour, nomfour HAVING count(*)=(SELECT MAX(nb_prod)
FROM (SELECT count(*) as nb_prod FROM acheter GROUP BY nofour) A);

nofour nomfour nombre_produits


Réponse 11 ORKIS 3
15 KBSS 3

Référence
http://webtic.free.fr/sql/exint/q1.htm

Auteur : Alain Girardet Créé le 8 octobre 2013


Modifié par : Alain Girardet Page 8 sur 8 Imprimé le 29 janvier 2024 08:01
Version : 40 du 29 janvier 2024 9-X-BDON-Marchandises.docx

Vous aimerez peut-être aussi