Exercice Langage SQL : Les livraisons (Partie 2)

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 rouge
10- 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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253549) 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.Ville11) 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’)

 
Article publié le 12 Décembre 2011