Exercice Langage SQL : Les livraisons (Partie 3)

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 :

17- Donnez les numéros des fournisseurs qui fournissent au moins un produit fourni par au moins un fournisseur qui fournit au moins un produit rouge
18- Donnez tous les triplets (VilleF, NumP, VilleU) tels qu’un fournisseur de la première ville VilleF approvisionne une usine de la deuxième ville VilleU avec un produit NumP
19- Même question que précédemment mais sans les triplets où les deux villes sont identiques
20- Donnez les numéros des produits qui sont livrés à toutes les usines de Paris
21- Donnez les numéros des fournisseurs qui approvisionnent toutes les usines avec un même produit
22- Donnez les numéros des usines qui achètent au fournisseur de numéro 3 tous les produits qu’il fournit
23- Donnez les numéros des usines qui s’approvisionnent uniquement chez le fournisseur de numéro 3

123456789101112131415161718192021222324252627282930313233343536373839404142434417) Donnez les numéros des fournisseurs qui fournissent au moins un produit fourni par au moins un fournisseur qui fournit au moins un produit rouge  P WHERE Couleur=‘Rouge’ AND P.Np=PUF2.Np AND PUF2.Nf=PUF1.Nf AND PUF1.Np=PUF.Np Ou bien SELECT DISTINCT Nf FROM PUF WHERE Np IN (SELECT Np FROM PUF WHERE Nf IN (SELECT Nf FROM PUF WHERE Np IN (SELECT Np FROM P WHERE Couleur=‘Rouge’))) 18) Donnez tous les triplets (VilleF, NumP, VilleU) tels qu"’"un fournisseur de la première ville VilleF approvisionne une usine de la deuxième ville VilleU avec un produit NumP  SELECT DISTINCT PUF.Nf FROM PUF, PUF PUF1, PUF PUF2,SELECT DISTINCT F.Ville, Np, U.Ville FROM PUF, U, F WHERE PUF.Nf=F.Nf AND PUF.Nu=U.Nu19) Même question que précédemment mais sans les triplets où les deux villes sont identiques SELECT DISTINCT F.Ville, NP, U.Ville FROM PUF, U, F WHEREF.VilleU.VilleANDPUF.Nf=F.NfAND PUF.Nu=U.Nu 20) Donnez les numéros des produits qui sont livrés à toutes les usines de Paris SELECT Np FROM PUF WHERE NOT EXISTS(SELECT Nu FROM U WHERE NOT EXISTS (SELECT * FROM PUF WHERE NOT (Ville=‘Paris’) OR (P.Np=PUF.Np AND U.Nu=PUF.Nu)) 21) Donnez les numéros des fournisseurs qui approvisionnent toutes les usines avec un même produit SELECT NF FROM PUF WHERE NOT EXISTS (SELECT Nu FROM U WHERE NOT EXISTS (SELECT * FROM PUF PUF1 WHEREF.Nf=PUF1.NFANDU.Nu=PUF1.NuAND PUF.Np=PUF1.Np)) 22) Donnez les numéros des usines qui achètent au fournisseur de numéro 3 tous les produits qu’il fournit  SELECT Nf FROM F WHERE EXISTS (SELECT Np FROM P WHERE NOT EXISTS (SELECT Nu FROM U WHERE NOT EXISTS (SELECT * FROM PUF WHERE F.Nf=PUF.Nf AND U.Nu=PUF.Nu AND P.Np=PUF.Np))) 23) Donnez les numéros des usines qui s"’"approvisionnent uniquement chez le fournisseur de numéro 3 SELECT Nu FROM U WHERE Nu NOT IN (SELECT Nu FROM PUF WHERE Nf3)
Article publié le 12 Décembre 2011