Exercice Langage SQL : Les livraisons (Partie 2)
Rédigé par GC Team, Publié le 12 Décembre 2011, Mise à jour le Mardi, 30 Novembre 1999 00:00![](/images/thumb/127/default.png)
Enoncé de l'exercice: (Les livraison Suite...)
Soit la base relationnelle de données PUF de schéma :
U (NumU, NomU, VilleU)
P (NumP, NomP, Couleur, Poids)
F (NumF, NomF, Statut, VilleF)
PUF (NumP, NumU, NumF, Quantité)
Décrivant le fait que (avec des DF évidentes) :
U : une usine est d’écrite par son numéro NumU, son nom NomU et la ville VilleU où elle est située
P : un produit est décrit par son numéro NumP, son nom NomP, sa couleur et son poids
F : un fournisseur est décrit par son numéro NumP, son nom NomF, son statut (sous-traitant, client…) et la ville VilleF où il est domicilié
PUF : le produit de numéro NumP a été délivré à l’usine de numéro NumU par le fournisseur de numéro NumF dans une quantité donnée.
Exprimer en SQL les requêtes suivantes :
9- Donnez les noms des fournisseurs qui approvisionnent une usine de Paris ou de Créteil en produit rouge10- Donnez les numéros des produits livrés à une usine par une fournisseur de la même ville
11- Donnez les numéros des produits livrés à une usine de Paris par un fournisseur de Paris
12- Donnez les numéros des usines qui ont au moins un fournisseur qui n’est pas de la même ville
13- Donnez les numéros des fournisseurs qui approvisionnent à la fois des usines de numéros 2 et 3
14- Donnez les numéros des usines qui utilisent au moins un produit disponible chez le fournisseur de numéro 3 (c’est-à-dire un produit que le fournisseur livre mais pas nécessairement à cette usine)
15- Donnez le numéro du produit le plus léger (les numéros si plusieurs produits ont ce même poids)
16- Donnez le numéro des usines qui ne reçoivent aucun produit rouge d’un fournisseur parisien
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
9) Donnez les noms des fournisseurs qui approvisionnent une usine de Paris ou de Créteil en produit rouge SELECT NomF FROM PUF, P, F, U WHERE Couleur=‘Rouge’ AND PUF.Np=P.Np AND PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND (U.Ville IN (‘Paris’,’Créteil’) Ou bien SELECT NomF FROM F WHERE Nf IN (SELECT Nf FROM PUF WHERE Np IN (SELECT Np FROM P WHERE Couleur=‘Rouge’) AND Nu IN (SELECT Nu FROM U WHERE Ville IN (‘Paris’, ‘Créteil’)) 10) Donnez les numéros des produits livrés à une usine par une fournisseur de la même ville SELECT DISTINCT Np FROM PUF, F, U WHERE PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND U.Ville=F.Ville 11) Donnez les numéros des produits livrés à une usine de Paris par un fournisseur de Paris SELECT DISTINCT Np FROM PUF, F, U WHERE PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND U.Ville=F.Ville AND U.Ville=‘Paris’ Ou bien SELECT DISTINCT Np FROM PUF WHERE Nf IN (SELECT Nf FROM F WHERE Ville=‘Paris’) AND Nu IN (SELECT Nu FROM U WHERE Ville=‘Paris’) 12) Donnez les numéros des usines qui ont au moins un fournisseur qui n"’"est pas de la même ville SELECT DISTINCT PUF.Nu FROM PUF, F, U WHERE PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND U.VilleF.ville Ou bien SELECT DISTINCT Nu FROM PUF WHERE Nf=ANY(SELECT Nf FROM F, U WHERE PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND F.VilleU.Ville) 13) Donnez les numéros des fournisseurs qui approvisionnent à la fois des usines de numéros 2 et 3 SELECT DISTINCT First.Nf FROM PUF First, PUF Second WHERE First.Nf=Second.Nf AND First.Nu=1 AND Second.Nu=2 Ou bien SELECT DISTINCT Nf FROM PUF WHERE Nf IN (SELECT Nf FROM PUF WHERE Nu=1) AND Nu=2 14) Donnez les numéros des usines qui utilisent au moins un produit disponible chez le fournisseur de numéro 3 (c"’"est-à-dire un produit que le fournisseur livre mais pas nécessairement à cette usine) SELECT DISTINCT Nu FROM PUF WHERE Np IN (SELECT Np FROM PUF WHERE Nf=3) 15) Donnez le numéro du produit le plus léger (les numéros si plusieurs produits ont ce même poids) SELECT Np FROM P WHERE Poids IN (SELECT MIN(Poids) FROM P) Ou bien SELECT Np FROM P p1 WHERE NOT EXISTS (SELECT * FROM P WHERE P1.Poids>Poids) 16) Donnez le numéro des usines qui ne reçoivent aucun produit rouge d"’"un fournisseur parisien SELECT Nu FROM U WHERE Nu NOT IN (SELECT Nu FROM PUF, F, P WHERE PUF.Np=P.Np AND PUF.Nf=F.Nf AND Couleur=‘Rouge’ AND Ville=‘Paris’) |