Index Suivant

1   Requêtes (7 points)

Soit les tables relationnelles suivantes :
Produit(NumProd, NomProd, CodeType, Fournisseur)
Type(CodeType, Libellé)
Achat(NumProd, NumAchat, Quantité)
DateAchat(NumAchat, Jour)
Les attributs sont: Exemple :

Produit
NumProd NomProd CodeType Fournisseur
15 Yaourt Cerise a178 Donane
123 Bière a987 Fohrenbourg
Type
CodeType Libelle
a178 Produit Laitier
a987 Boisson Alcoolisée

Achat
NumProd NumAchat Quantité
15 311 12
15 311 6
123 415 12
DateAchat
NumAchat Jour
311 Samedi
415 Lundi

Ecrivez les requêtes suivantes dans le(s) langage(s) indiqué(s):
  1. SQL et Algèbre: Les noms des produits laitiers du fournisseur Donane?

    Solution: SQL:
    
    select NomProd
      from Produit, Type
     where Profuit.CodeType = Type.CodeType
       and Libelle = 'Produit Laitier'
       and Fournisseur = 'Donane'
    
  2. La requête précédente en calcul relationnel (n-uplet ou domaine)?

    Solution:
    { B | $ A,C (Produit(A,B,C,'Donane') Ù Type(C, 'Produit Laitier'))}
  3. SQL et algebre: Les numéros des produits que les clients achetent samedi mais pas lundi?

    Solution: SQL:
    
    select NumProd
      from Achat, DateAchat 
     where Achat.NumAchat = DateAchat.NumAchat
       and Jour ='Samedi'
       and NumProd not in (select NumProd 
                             from Achat, DateAchat
                            where Achat.NumAchat = DateAchat.NumAchat
                              and Jour ='Lundi')
    
    Algèbre:

  4. Traduisez la requête calcul domaine suivante en SQL :
    { B | $ A,C (Produit(A, B, C, 'Donane') Ù ¬$ D, E (Achat(A, D, E)))}

    Solution:
    
    select NomProd
      from Produit
     where Fournisseur = 'Donane'
       and NumProd not in (select NumProd
                             from Achat)
    
  5. Expliquez le résultat de la requête précédente en Francais?

    Solution: Les produits 'Donane' qu'on n'achète pas.

  6. SQL: Le nombre de bières achetées les samedis?

    Solution:
    
    select sum(quantité)
      from Produit, Achat, DateAchat
     where NomProd = 'Bière'
       and DateAchat = 'Samedi'
       and Produit.NumProd=Achat.NumProd
       and Achat.NumAchat=DateAchat.NumAchat
    
  7. SQL: Les numéros des produits, les jour et pour chaque produit et chaque jour la quantité totale achetée.

    Solution:
    
    select NumProd, Jour, sum(quantité)
      from Achat, DateAchat
     where Achat.NumAchat = DateAchat.NumAchat
     group by NumProd, Jour
    

Index Suivant