Exercice SQL corrigé les livraisons (Partie III)

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

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.Nu

19- 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)

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *