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

Exercice Langage SQL : Les livraisons (Partie 2)


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 :
9-   Donnez les noms des fournisseurs qui approvisionnent une usine de Paris ou de Créteil en produit rouge
10- Donnez les numéros des produits livrés à une usine par une fournisseur de la même ville
11- Donnez les numéros des produits livrés à une usine de Paris par un fournisseur de Paris
12- Donnez les numéros des usines qui ont au moins un fournisseur qui n’est pas de la même ville
13- Donnez les numéros des fournisseurs qui approvisionnent à la fois des usines de numéros 2 et 3
14- Donnez les numéros des usines qui utilisent au moins un produit disponible chez le fournisseur de numéro 3 (c’est-à-dire un produit que le fournisseur livre mais pas nécessairement à cette usine)
15- Donnez le numéro du produit le plus léger (les numéros si plusieurs produits ont ce même poids)
16- Donnez le numéro des usines qui ne reçoivent aucun produit rouge d’un fournisseur parisien

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
45
46
47
48
49
50
51
52
53
54
9) Donnez les noms des fournisseurs qui approvisionnent une usine de Paris ou de Créteil en produit rouge 
 
SELECT NomF FROM PUF, P, F, U WHERE
    Couleur=‘Rouge’ AND PUF.Np=P.Np AND PUF.Nf=F.Nf AND
    PUF.Nu=U.Nu AND (U.Ville IN (‘Paris’,’Créteil’)
       Ou bien SELECT NomF FROM F WHERE Nf IN (SELECT
      Nf FROM PUF WHERE Np IN (SELECT Np FROM P
      WHERE Couleur=‘Rouge’) AND Nu IN (SELECT Nu FROM
      U WHERE Ville IN (‘Paris’, ‘Créteil’))
 
10) Donnez les numéros des produits livrés à une usine par une fournisseur de la même ville 
 
SELECT DISTINCT Np FROM PUF, F, U WHERE PUF.Nf=F.Nf
    AND PUF.Nu=U.Nu AND U.Ville=F.Ville
11) Donnez les numéros des produits livrés à une usine de Paris par un fournisseur de Paris
 
SELECT DISTINCT Np FROM PUF, F, U WHERE PUF.Nf=F.Nf
    AND PUF.Nu=U.Nu AND U.Ville=F.Ville AND U.Ville=‘Paris’
       Ou bien SELECT DISTINCT Np FROM PUF WHERE Nf IN
      (SELECT Nf FROM F WHERE Ville=‘Paris’) AND Nu IN
      (SELECT Nu FROM U WHERE Ville=‘Paris’)
 
12) Donnez les numéros des usines qui ont au moins un fournisseur qui n"’"est pas de la même ville
 
SELECT DISTINCT PUF.Nu FROM PUF, F, U WHERE
    PUF.Nf=F.Nf AND PUF.Nu=U.Nu AND U.VilleF.ville
       Ou bien SELECT DISTINCT Nu FROM PUF WHERE
      Nf=ANY(SELECT Nf FROM F, U WHERE PUF.Nf=F.Nf AND
      PUF.Nu=U.Nu AND F.VilleU.Ville)
 
13) Donnez les numéros des fournisseurs qui approvisionnent à la fois des usines de numéros 2 et 3
 
SELECT DISTINCT First.Nf FROM PUF First, PUF Second
    WHERE First.Nf=Second.Nf AND First.Nu=1 AND Second.Nu=2
      Ou bien SELECT DISTINCT Nf FROM PUF WHERE Nf IN
      (SELECT Nf FROM PUF WHERE Nu=1) AND Nu=2
 
14) Donnez les numéros des usines qui utilisent au moins un produit disponible chez le fournisseur de numéro 3 (c"’"est-à-dire un produit que le fournisseur livre mais pas nécessairement à cette usine)
 
SELECT DISTINCT Nu FROM PUF WHERE Np IN (SELECT
    Np FROM PUF WHERE Nf=3)
 
15) Donnez le numéro du produit le plus léger (les numéros si plusieurs produits ont ce même poids)
 
SELECT Np FROM P WHERE Poids IN (SELECT MIN(Poids) FROM P)
       Ou bien 
SELECT Np FROM P p1 WHERE NOT EXISTS
      (SELECT * FROM P WHERE P1.Poids>Poids)
 
16) Donnez le numéro des usines qui ne reçoivent aucun produit rouge d"’"un fournisseur parisien
 
SELECT Nu FROM U WHERE Nu NOT IN (SELECT Nu FROM
    PUF, F, P WHERE PUF.Np=P.Np AND PUF.Nf=F.Nf AND
    Couleur=‘Rouge’ AND Ville=‘Paris’)

0 commentaires:

Enregistrer un commentaire

 
-