PRODUIT (numProduit, libelle, prix)
VILLE (NomVille, superficie, population)
EMPLOYE (NumSS, nom, prénom, age)
ENTREPOT (numEntrepot, NomVille, NumSS, adresse, capacite, classe)
STOCKAGE (numEntrepot, NomVille, numProduit, quantite)
1. Donner la liste des produits (libelle, prix) stockés dans des entrepôts de la ville de Paris.
SELECT Libellé, prix
FROM Stockage S, Produit P
WHERE S.numProduit = P.numProduit
AND NomVille = ‘Paris’
2. Donner la liste des employés (nom, prénom) de plus de 30 ans n’assurant la responsabilité d’aucun entrepôt.
SELECT EM.nom, EM.prénom
FROM Employé EM
WHERE age = > 30
WHERE NumSS IN
(SELECT EM.NumSS
FROM Employé EM
MINUS
SELECT EN.NumSS
WHERE Entrepot EN)
3. Donner la liste des employés (tous les attributs) responsables d’au moins un entrepôt d’une grande ville et stockant le produit de libellé « pesticides » pour une quantité inférieure à 50. Une grande ville est caractérisée par une population de plus de 100 000 habitants.
SELECT Num SS, nom, prénom, age
FROM Employé E, Produit P, Stockage S, Ville V
WHERE P.NumProduit = S.NumProduit
AND V.NomVille = S.NomVille
AND libelle = ‘pesticides »
AND quantité = < 50
AND population = > 100 000
4. Pour chaque ville de plus de 50 000 habitants, donner le nombre de grands entrepôts de classe A qu’elle comporte. Un grand entrepôt est d’une capacité supérieure à 2000.
SELECT NumEntrepot, COUNT (*)
FROM VILLE V, ENTREPOT E
WHERE V.nomVille = E.nomVille
AND Population = > 50 000
AND classe = A
AND capacité = > 2 000
GROUP BY NumEntrepot
5. Pour chaque produit (numProduit, libelle), donner le nombre d’entrepôts dans lesquels il est stocké. On ne s’intéresse qu’aux produits stockés dans plus de 4 entrepôts.
SELECT NumProduit, libelle, COUNT(*)
FROM Produit P, Stockage S
WHERE P.numProduit, S.numProduit
HAVING COUNT (DISTINCT numEntrepot) >= 4
GROUP BY NumProduit, libelle
6. Donner le nombre total de produits stockés dans les entrepôts de la ville de Paris.
SELECT NumProduit, COUNT (*)
FROM Stockage
WHERE NomVille = ‘Paris’