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