Exercice Access corrigé gestion d’oeuvres

  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;

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *