Créer une requête basée sur plusieurs tables

Dans Access, le processus de création et d’utilisation de requêtes consiste parfois à simplement sélectionner des champs dans une table, voire à appliquer plusieurs critères, puis à afficher les résultats. Mais que se passe-t-il si, comme souvent, les données dont vous avez besoin se trouvent dans plusieurs tables ? Heureusement, vous pouvez créer une requête combinant des informations issues de plusieurs sources. Cette rubrique explore différents scénarios avec extraction de données issues de plusieurs tables et vous explique comment procéder.

Que voulez-vous faire ?

Utiliser les données d’une table liée pour améliorer les informations de votre requête

Connecter les données de deux tables en utilisant leurs relations avec une troisième table

Afficher tous les enregistrements de deux tables similaires

Utiliser les données d’une table liée pour améliorer les informations de votre requête

Parfois, une requête basée sur une table vous fournit les informations dont vous avez besoin, mais l’extraction de données d’une autre table peut permettre d’obtenir des résultats plus clairs et plus utiles. Supposons, par exemple, qu’une liste d’ID d’employés apparaît dans les résultats de votre requête. Vous comprenez alors qu’il vous serait plus utile d’afficher les noms des employés dans les résultats, mais derniers se trouvent dans une autre table. Pour faire apparaître les noms des employés dans les résultats de votre requête, vous devez y inclure ces deux tables.

Utiliser l’Assistant Requête pour créer une requête à partir d’une table primaire et d’une table liée

  1. Assurez-vous que les tables disposent d’une relation définie dans le fenêtre Relations.

    Comment ?

    1. Sous l’onglet Outils de base de données, dans le groupe Afficher/Masquer, cliquez sur Relations.

    2. Dans l’onglet Création, dans le groupe Relations, cliquez sur Toutes les relations.

    3. Identifiez les tables qui doivent disposer d’une relation définie.

      • Si les tables sont visibles dans la fenêtre Relations, vérifiez qu’une relation a déjà été définie.

        Une relation apparaît sous forme de ligne qui relie les deux tables sur un champ commun. Double-cliquez sur une ligne de relation pour afficher les champs des tables connectés par la relation.

      • Si les tables ne sont pas visibles dans la fenêtre Relations, il vous faut les ajouter.

        Sous l’onglet Création, dans le groupe Afficher/Masquer, cliquez sur Noms des tables.

        Double-cliquez sur chacune des tables que vous souhaitez afficher, puis cliquez sur Fermer.

    4. Si vous ne trouvez pas de relation entre les deux tables, créez-en une en faisant glisser un champ d’une des tables vers un champ de l’autre table. Les types de données des champs sur lesquels vous créez la relation doivent être identiques.

      Remarque : Vous pouvez créer une relation entre un champ de type type de données NuméroAuto et un champ de type type de données Numérique, si ce champ présente une taille de champ de type Entier long. C’est souvent le cas lorsque vous créez un relation un-à-plusieurs.

      La boîte de dialogue Modifier des relations s’affiche.

    5. Cliquez sur Créer pour créer la relation.

      Pour plus d’informations sur les options disponibles lorsque vous créez une relation, voir l’article Créer, modifier ou supprimer une relation.

    6. Fermez la fenêtre Relations.

  2. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Assistant Requête. Remarque : Si vous utilisez Access 2007, sur l’onglet Créer, dans le groupe Autres, cliquez sur Assistant Requête.

  3. Dans la boîte de dialogue Nouvelle requête, cliquez sur Assistant Requête simple, puis sur OK.

  4. Dans la zone de liste modifiable Tables/Requêtes, cliquez sur la table contenant les informations de base à inclure dans votre requête.

  5. Dans la liste Champs disponibles, cliquez sur le premier champ que vous souhaitez inclure dans votre requête, puis cliquez sur la flèche droite pour déplacer le champ vers la liste Champs sélectionnés. Faites de même avec chaque champ de table que vous souhaitez inclure dans votre requête. Il peut s’agir de champs à renvoyer dans les résultats de la requête ou de champs à utiliser pour limiter les lignes de résultats en appliquant des critères.

  6. Dans la zone de liste modifiable Tables/Requêtes, cliquez sur la table contenant les données liées à utiliser pour améliorer les résultats de votre requête.

  7. Ajoutez les champs à utiliser pour améliorer les résultats de votre requête à la liste Champs sélectionnés, puis cliquez sur Suivant.

  8. Sous Souhaitez-vous une requête détaillée ou une synthèse ?, cliquez sur Détaillée ou Synthèse.

    Si vous ne souhaitez pas que votre requête effectue des fonctions d’agrégation (Somme, Moy, Min, Max, Nombre, Écartype ou Var), choisissez une requête détaillée. Si vous souhaitez que votre requête effectue une fonction d’agrégation, choisissez une requête de synthèse. Après avoir choisi, cliquez sur Suivant.

  9. Cliquez sur Terminer pour afficher les résultats.

Exemple utilisant la base de données Northwind

Dans l’exemple suivant, vous utilisez l’Assistant Requête pour créer une requête affichant une liste de commandes, les frais d’expédition de chaque commande ainsi que le nom de l’employé qui a géré chaque commande.

Remarque : Cet exemple implique la modification de la base de données Northwind. Vous souhaiterez peut-être créer une copie de sauvegarde de la base de données Northwind, puis suivre cet exemple en utilisant cette copie de sauvegarde.

Utiliser l’Assistant Requête pour créer la requête

  1. Ouvrez la base de données Northwind. Fermez le formulaire de connexion.

  2. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Assistant Requête. Remarque : Si vous utilisez Access 2007, sur l’onglet Créer, dans le groupe Autres, cliquez sur Assistant Requête.

  3. Dans la boîte de dialogue Nouvelle requête, cliquez sur Assistant Requête simple, puis sur OK.

  4. Dans la zone de liste modifiable Tables/Requêtes, cliquez sur Table : commandes.

  5. Dans la liste Champs disponibles, double-cliquez sur RéfCommande pour déplacer ce champ vers la liste Champs sélectionnés. Double-cliquez sur Frais d’expédition pour déplacer ce champ vers la liste Champs sélectionnés.

  6. Dans la zone de liste modifiable Tables/Requêtes, cliquez sur Table : employés.

  7. Dans la liste Champs disponibles, double-cliquez sur Prénom pour déplacer ce champ vers la liste Champs sélectionnés. Double-cliquez sur Nom pour déplacer ce champ vers la liste Champs sélectionnés. Cliquez sur Suivant.

  8. Si vous créez une liste de toutes les commandes, utilisez une requête détaillée. Si vous totalisez les frais d’expédition par employé ou effectuez d’autres fonctions d’agrégation, utilisez une requête de synthèse. Cliquez sur Détaillée (affiche chaque champ de tous les enregistrements), puis sur Suivant.

  9. Cliquez sur Terminer pour afficher les résultats.

La requête renvoie une liste de commandes, chacune accompagnée des frais d’expédition ainsi que des prénom et nom de l’employé qui s’en est chargé.

Haut de la page

Connecter les données de deux tables en utilisant leurs relations avec une troisième table

Les données de deux tables sont souvent liées via une troisième table. En effet, les données entre les deux premières tables sont liées dans une relation plusieurs à plusieurs. Il est ainsi conseillé de scinder une relation plusieurs-à-plusieurs entre deux tables en deux relations un-à-plusieurs impliquant trois tables. Pour ce faire, vous devez créer une troisième table, appelée table de jointure ou table de relation, présentant une clé primaire et une clé étrangère pour chacune des autres tables. Une relation un-à-plusieurs est alors créée entre chaque clé étrangère de la table de jointure et la clé primaire d’une des autres tables. Dès lors, il vous faut inclure les trois tables dans votre requête, même si vous souhaitez récupérer des données issues de deux d’entre elles uniquement.

Créer une requête Sélection à l’aide de tables avec relation plusieurs-à-plusieurs

  1. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête. Remarque : si vous utilisez Access 2007, sous l’onglet Créer, dans le groupe Autres, cliquez sur Création de requête.

    La boîte de dialogue Afficher la table s’ouvre.

  2. Dans la boîte de dialogue Afficher la Table, double-cliquez sur les deux tables contenant les données que vous souhaitez inclure dans votre requête et la table de jointure qui les lie, puis cliquez sur Fermer.

    Les trois tables apparaissent dans l’espace de travail Création de requête, jointes au niveau des champs qui conviennent.

  3. Double-cliquez sur chacun des champs que vous souhaitez utiliser dans les résultats de votre requête. Chaque champ apparaît alors dans la requête grille de création.

  4. Dans la grille de création de requête, utilisez la ligne Critères pour entrer des critères de champ. Pour utiliser un critère de champ sans afficher le champ dans les résultats de la requête, désactivez la case à cocher de la ligne Afficher correspondant à ce champ.

  5. Pour trier les résultats en fonction des valeurs d’un champ, dans la grille de création de requête, cliquez sur Croissant ou Décroissant (selon la manière dont vous souhaitez trier les enregistrements) dans la ligne Trier correspondant à ce champ.

  6. Sous l’onglet Création, dans le groupe Résultats, cliquez sur Exécuter.

    Access affiche les résultats de la requête dans mode Feuille de données.

Exemple utilisant la base de données Northwind

Remarque : Cet exemple implique la modification de la base de données Northwind. Vous souhaiterez peut-être créer une copie de sauvegarde de la base de données Northwind, puis suivre cet exemple en utilisant la copie de sauvegarde.

Supposons qu’une nouvelle opportunité se présente : après avoir découvert votre site web, un fournisseur basé à Rio de Janeiro souhaite faire affaire avec vous. Cela étant, il travaille uniquement à Rio et dans les environs de São Paulo. Il couvre toutes les catégories de produits alimentaires que vous négociez. L’entreprise est bien implantée et vous souhaitez vous assurer de pouvoir leur offrir suffisamment de ventes pour que cela soit intéressant : au moins 20 000,00 R$ par an de ventes (environ 9 300,00 USD). Pouvez-vous lui ouvrir les portes du marché dont il a besoin ?

Les données permettant de répondre à cette question se trouvent à deux emplacements : une table Clients et une table Détails des commandes. Ces tables sont liées par une table Commandes. Les relations entre les tables ont déjà été définies. Dans la table Commandes, une commande peut être liée à un seul client dans le champ RéfClient. Tous les enregistrements de la table Détails des commandes sont liés à une seule commande de la table Commande, dans le champ RéfCommande. Dès lors, un client donné peut avoir de nombreuses commandes, chacune accompagnée de nombreux détails.

Dans cet exemple, vous créerez une requête Analyse croisée affichant des ventes totales par an dans les villes de Rio de Janeiro et São Paulo.

Créer la requête en mode Création

  1. Ouvrez la base de données Northwind. Fermez le formulaire de connexion.

  2. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête. Remarque : si vous utilisez Access 2007, sous l’onglet Créer, dans le groupe Autres, cliquez sur Création de requête.

    La boîte de dialogue Afficher la table s’ouvre.

  3. Dans la boîte de dialogue Afficher la table, double-cliquez sur Clients, Commandes et Détails de la commande, puis cliquez sur Fermer.

    Les trois tables apparaissent dans l’espace de travail Création de requête.

  4. Dans la table Clients, double-cliquez sur le champ Ville pour l’ajouter à la grille de création de requête.

  5. Dans la grille de création de requête, dans la ligne Critères de la colonne Ville, entrez À (« Rio de Janeiro », « São Paulo »). Ainsi, seuls les enregistrements correspondant à ces deux villes sont inclus dans la requête.

  6. Dans la table Détails des commandes, double-cliquez sur les champs DateExpédition et PrixUnitaire.

    Ces champs sont ajoutés à la grille de création de requête.

  7. Dans la colonne DateExpédition de la grille de création de requête, sélectionnez la ligne Champ. Remplacez [DateExpédition] par Année : format([DateExpédition], « aaaa »). Cela crée un alias de champ, Année, qui vous permet d’utiliser uniquement la partie année de la valeur du champ DateExpédition.

  8. Dans la colonne PrixUnitaire de la grille de création de requête, sélectionnez la ligne Champ. Remplacez [PrixUnitaire] par Ventes : [Détails des commandes].[PrixUnitaire] * [Quantité]-[Détails des commandes].[PrixUnitaire] * [Quantité] * [Remise]. Cela crée un alias de champ, Ventes, qui calcule les ventes pour chaque enregistrement.

  9. Sous l’onglet Création, dans le groupe Type de requête, cliquez sur Analyse croisée.

    Deux nouvelles lignes, Total et Analyse croisée, apparaissent dans la grille de création de requête.

  10. Dans la colonne Ville de la grille de création de requête, cliquez sur la ligne Analyse croisée, puis cliquez sur En-tête de ligne.

    Les valeurs des villes s’affichent sous les en-têtes des lignes (la requête renvoie une ligne par ville).

  11. Dans la colonne Année, cliquez sur la ligne Analyse croisée, puis sur En-tête de colonne.

    Les valeurs des années s’affichent sous les en-têtes des colonnes (la requête renvoie une colonne par année).

  12. Dans la colonne Ventes, cliquez sur la ligne Analyse croisée, puis sur Valeur.

    Les valeurs de ventes s’affichent à l’intersection des lignes et de la colonne (la requête renvoie une valeur de ventes pour chaque combinaison de ville et d’année).

  13. Dans la colonne Ventes, cliquez sur la ligne Totaux, puis sur Somme.

    La requête totalise les valeurs cette colonne.

    Vous pouvez laisser la ligne Totaux des deux autres colonnes sur la valeur par défaut Regrouper par car vous souhaitez afficher chaque valeur pour ces colonnes, et non des valeurs agrégées.

  14. Sous l’onglet Création, dans le groupe Résultats, cliquez sur Exécuter.

Vous disposez à présent d’une requête qui renvoie le total des ventes par année à Rio de Janeiro et São Paulo.

Haut de la page

Afficher tous les enregistrements de deux tables similaires

Vous souhaiterez peut-être combiner les données de deux tables identiques en termes de structure, mais dont l’une se trouve dans une autre base de données. Examinons le scénario suivant.

Vous êtes analyste et vous utilisez des données d’étudiants. Votre école et une autre école collaborent afin de permettre à chacune d’améliorer son cursus. Pour répondre à certaines questions, vous souhaitez consulter les enregistrements des deux écoles, plutôt que les enregistrements de chacune séparément.

Vous pourriez importer les données de l’autre école dans de nouvelles tables de votre base de données, mais ce faisant, les modifications apportées aux données de cette autre école ne se répercuteraient pas dans votre base de données. Il vous est donc conseillé de lier les tables de l’autre école, puis de créer des requêtes combinant les données lorsque vous les exécutez. Vous pourrez ainsi analyser les données sous forme d’ensemble unique, plutôt que de devoir effectuer deux analyses pour essayer de les interpréter comme s’il s’agissait d’une seule analyse.

Pour afficher tous les enregistrements de deux tables à structure identique, vous utilisez une requête Union.

Les requêtes Union ne peuvent pas être affichées en mode Création. Pour les créer, vous devez utiliser des commandes SQL que vous entrez dans un mode SQL onglet objet.

Créer une requête Union à l’aide de deux tables

  1. Sous l’onglet Créer, dans le groupe Requêtes, cliquez sur Création de requête. Remarque : si vous utilisez Access 2007, sous l’onglet Créer, dans le groupe Autres, cliquez sur Création de requête.

    Une nouvelle grille de création de requête s’ouvre et la boîte de dialogue Afficher la table apparaît.

  2. Dans la boîte de dialogue Afficher la table, cliquez sur Fermer.

  3. Sous l’onglet Création, dans le groupe Type de requête, cliquez sur Union.

    La requête passe du mode Création au mode SQL. À ce stade, l’onglet objet du mode SQL est vide.

  4. En mode SQL, entrez SELECT, suivi de la liste des champs de la première table que vous souhaitez inclure dans la requête. Les noms des champs doivent être placés entre crochets et séparés par des virgules. Une fois les noms des champs entrés, appuyez sur Entrée. En mode SQL, le curseur se déplace d’une ligne vers le bas.

  5. Entrez FROM, suivi du nom de la première table que vous souhaitez inclure dans la requête. Appuyez sur Entrée.

  6. Pour spécifier un critère pour un champ de la première table, entrez WHERE, suivi du nom du champ, d’un opérateur de comparaison (généralement, un signe égal (=)) et du critère. Vous pouvez ajouter des critères supplémentaires à la fin de la clause WHERE à l’aide du mot clé AND et de la même syntaxe que celle utilisée pour le premier critère ; par exemple, où [ClassLevel] = « 100 » AND [CreditHours] > 2. Une fois les critères spécifiés, appuyez sur Entrée.

  7. Entrez UNION, puis appuyez sur Entrée.

  8. Entrez SELECT, suivi de la liste des champs de la deuxième table que vous souhaitez inclure dans la requête. Vous devez inclure les mêmes champs à partir de cette table que ceux inclus à partir de la première table, et dans le même ordre. Les noms des champs doivent être placés entre crochets et séparés par des virgules. Une fois les noms des champs entrés, appuyez sur Entrée.

  9. Entrez FROM, suivi du nom de la deuxième table que vous souhaitez inclure dans la requête. Appuyez sur Entrée.

  10. Vous pouvez ajouter une clause WHERE, comme décrit à l’étape 6 de cette procédure.

  11. Entrez un point-virgule (;) pour indiquer la fin de votre requête.

  12. Sous l’onglet Création, dans le groupe Résultats, cliquez sur Exécuter.

    Les résultats s’affichent en mode Feuille de données.

Haut de la page

Voir aussi

Joindre des tables et des requêtes

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoignez le programme Office Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×