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)