Exercices Access Exercice Access : gestion d'oeuvres - Corrigé

Exercice Access : gestion d'oeuvres - Corrigé

Index de l'article
Exercice Access : gestion d'oeuvres
Corrigé
Toutes les pages

FICHIER : la base corrigée

  1. 15
    erreur classique : penser que toutes les oeuvres sont des peintures, et répondre 17
    SQL : SELECT Count(Type.CodeOeuvre) AS CompteDeCodeOeuvre FROM Type GROUP BY Type.CodeArt HAVING (((Type.CodeArt)="P"));
  2. Musée Picasso Barcelone et Musée Picasso Màlaga
    SQL : SELECT Musée.NomMusee FROM (Musée INNER JOIN Oeuvre ON Musée.CodeMusee = Oeuvre.CodeMusee) INNER JOIN (Artiste INNER JOIN Créateur ON Artiste.CodeArtiste = Créateur.CodeArtiste) ON Oeuvre.CodeOeuvre = Créateur.CodeOeuvre WHERE (((Artiste.NomArtiste)="Pablo Picasso"));
  3. Espagne
    On passe ici par deux sous-requêtes :
    - nombre d'artistes par pays (SQL : SELECT Pays.NomPays, Count(Artiste.CodePays) AS CompteDeCodePays FROM Pays INNER JOIN Artiste ON Pays.CodePays=Artiste.CodePays GROUP BY Pays.NomPays;)
    - max d'artistes par pays (SQL : SELECT Max([3a - nombre d'artistes par pays].CompteDeCodePays) AS MaxDeCompteDeCodePays FROM [3a - nombre d'artistes par pays];)
    puis : SELECT [3a - nombre d'artistes par pays].NomPays FROM [3a - nombre d'artistes par pays] INNER JOIN [3b - max d'artistes par pays] ON [3a - nombre d'artistes par pays].CompteDeCodePays = [3b - max d'artistes par pays].MaxDeCompteDeCodePays;
  4. Brooklyn Museum : 0,00025 / collection Faringdon - Oxon : 0,003 / Delaware Art Museum : 0,002 / ... / Musée Picasso Màlaga : 1,119E-05
    Les nombres sont ridicules en raison du peu d'oeuvres entrées (pour des superficies réalistes)
    On passe par une sous-requête :
    nombre d'oeuvres par musée (SELECT Count(Oeuvre.CodeOeuvre) AS CompteDeCodeOeuvre, Musée.CodeMusee FROM Musée INNER JOIN Oeuvre ON Musée.CodeMusee=Oeuvre.CodeMusee GROUP BY Musée.CodeMusee;)
    puis un champ densité: [CompteDeCodeOeuvre]/Musée!Superficie
    SQL : SELECT Musée.NomMusee, [CompteDeCodeOeuvre]/Musée!Superficie AS densité FROM Musée INNER JOIN [4a - nombre d'oeuvres par musée] ON Musée.CodeMusee = [4a - nombre d'oeuvres par musée].CodeMusee GROUP BY Musée.NomMusee, [CompteDeCodeOeuvre]/Musée!Superficie;
  5. On demande ici une analyse croisée !
    SQL : TRANSFORM Count(Oeuvre.CodeOeuvre) AS CompteDeCodeOeuvre SELECT Artiste.NomArtiste FROM Pays INNER JOIN (Oeuvre INNER JOIN (Artiste INNER JOIN Créateur ON Artiste.CodeArtiste = Créateur.CodeArtiste) ON Oeuvre.CodeOeuvre = Créateur.CodeOeuvre) ON Pays.CodePays = Artiste.CodePays GROUP BY Artiste.NomArtiste PIVOT Pays.NomPays;
  6. NomArtiste / représenté dans son propre pays, Barnabé Muges / oui, Howard Pyle / oui, ... , William Blake / non
    Il faut faire ici un Vrai/Faux : représenté dans son propre pays: VraiFaux(Pays!NomPays=Pays_1!NomPays;"oui";"non")
    SQL : SELECT Artiste.NomArtiste, IIf(Pays!NomPays=Pays_1!NomPays,"oui","non") AS [représenté dans son propre pays] FROM Pays AS Pays_1 INNER JOIN ((Musée INNER JOIN Oeuvre ON Musée.CodeMusee = Oeuvre.CodeMusee) INNER JOIN ((Pays INNER JOIN Artiste ON Pays.CodePays = Artiste.CodePays) INNER JOIN Créateur ON Artiste.CodeArtiste = Créateur.CodeArtiste) ON Oeuvre.CodeOeuvre = Créateur.CodeOeuvre) ON Pays_1.CodePays = Musée.CodePays GROUP BY Artiste.NomArtiste, IIf(Pays!NomPays=Pays_1!NomPays,"oui","non") ORDER BY Artiste.NomArtiste;



Ajouter un Commentaire


Save on Delicious