- Exercice Langage SQL : Les livraisons (Partie 3) - Licence Fondamentale d'Informatique
lundi 25 mars 2013

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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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)

0 commentaires:

Enregistrer un commentaire

 
-