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

1
2
3
4
5
6
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

1
2
3
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

1
2
3
 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

1
2
3
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

1
2
3
4
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

1
2
3
4
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

1
2
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 *

Besoin d'aide ?