Joindre des tables et des requêtes

Joindre des tables et des requêtes

Important :  Cet article a été traduit automatiquement, voir l’avertissement. Vous pouvez consulter la version en anglais de cet article ici.

Lorsque vous incluez plusieurs sources de données dans une requête Access, vous utilisez jointures pour limiter les enregistrements que vous souhaitez faire figurer, en fonction de la façon dont les sources de données sont liés entre eux. Vous utilisez également jointures pour combiner les enregistrements à partir de deux sources de données, afin que chaque paire d’enregistrements à partir des sources devient un enregistrement dans les résultats de requête.

Cet article aborde les différents types de jointures et explique comment les utiliser dans une requête. Par défaut, une jointure est créée automatiquement s’il existe déjà une relation entre deux sources de données que vous utilisez dans une requête. Une jointure est également créée si certains champs correspondent clairement entre eux. Vous pouvez supprimer une jointure créée automatiquement. Cet article fournit des informations de base sur les relations entre les tables, y compris comment en créer un.

Remarque : Vous pouvez participer à des requêtes de la même façon que vous joignez des tables et que vous pouvez également rejoindre les deux.

Contenu de cet article

Vue d’ensemble

Types de jointures

Afficher les lignes à l’endroit où il existe une valeur commune dans les deux tables jointes

Afficher toutes les lignes d’une table et les lignes correspondantes de l’autre table

Afficher toutes les lignes des deux tables et les joindre à l’endroit où il existe une valeur commune

Jointures croisées

Joindre des tables en fonction de l’inégalité des valeurs de champ

Supprimer une jointure

Vue d’ensemble

Une base de données est une collection de tables de données qui portent des relations logiques entre eux. Utilisez les liens pour connecter les tables en fonction de champs qu’ils ont en commun. Un tableau peut faire partie d’un nombre quelconque de relations, mais chaque relation a toujours exactement deux tables. Dans une requête, une relation est représentée par une jointure.

Lorsque vous ajoutez des tables à une requête, Access crée des jointures qui sont basées sur les relations qui ont été définies entre les tables. Vous pouvez créer manuellement des jointures dans les requêtes, même si elles ne représentent pas les relations qui ont déjà été définies. Si vous utilisez d’autres requêtes (au lieu d’ou en plus de tables) en tant que sources de données d’une requête, vous pouvez créer des jointures entre les requêtes source, ainsi qu’entre ces dernières et les tables que vous utilisez comme sources de données.

Jointures agissent comme critères de requête dans la mesure où ils établissent des règles que les données doivent correspondre pour être inclus dans les opérations de requête. Contrairement aux critères, les jointures également spécifient que chaque paire de lignes qui remplissent les conditions de jointure est combinée dans le jeu d’enregistrements pour former une seule ligne.

Il existe quatre types de jointures : les jointures internes, les jointures externes, les jointures croisées et les jointures inégales. Cet article décrit les différents types de jointure, que vous pouvez utiliser, vous l’utilisez chaque type et comment créer les jointures.

Les jointures sont aux requêtes ce que les relations sont aux tables, c’est-à-dire une indication de la manière dont deux sources peuvent être combinées en fonction des valeurs de données qu’elles ont en commun. Voici l’illustration d’une jointure en mode Création de requête avec les propriétés de la jointure ouvertes dans une boîte de dialogue :

Boîte de dialogue Propriétés de la jointure.

Cette ligne entre les tables représente la jointure. Double-cliquez sur une jointure pour ouvrir la boîte de dialogue Propriétés de la jointure (illustrée) et afficher ou modifier la jointure.

Les jointures sont parfois directionnelles. Cette zone de la boîte de dialogue vous indique à quelle table correspond chaque table dans la jointure, et quels champs sont utilisés pour joindre les tables.

Cette zone détermine le type de jointure : l’option 1 est une jointure interne, 2 une jointure externe gauche et 3 une jointure externe droite.

Les champs des deux tables peuvent être utilisés, et les données correspondant à une tâche donnée sont affichées de chacun d’eux. Dans une jointure interne, aucune autre donnée n’est incluse. Dans une jointure externe, les enregistrements non associés d’une table sont également inclus dans les résultats de la requête.

Haut de la Page

Types de jointures

Il existe principalement quatre types de jointures : les jointures internes, externes, croisées et inégales. Les jointures croisées et les jointures inégales sont des types de jointures avancées rarement utilisés, mais vous devez en connaître les principes pour bien comprendre comment fonctionnent les jointures.

Jointures internes : seules les données associées des deux tables sont combinées

Une jointure interne est une jointure dans laquelle Access inclut uniquement les données d’une table s’il existe des données correspondantes dans l’autre table, et vice-versa. La plupart du temps, vous utiliserez des jointures internes. Lorsque vous créez une jointure sans spécifier de quel type de jointure il s’agit, Access suppose que vous voulez une jointure interne. Les jointures internes sont pratiques car elles vous permettent de combiner des données de deux sources en fonction de valeurs partagées, vous voyez donc seulement les données d’une image précise.

Jointures externes : toutes les données associées combinées correctement, ainsi que tous les enregistrements restants d’une table

Une jointure externe est similaire à une jointure interne, sauf qu’elle ajouter les lignes restantes de l’une des tables. Les jointures externes sont directionnelles : une jointure externe gauche inclut tous les enregistrements de la table de gauche (c’est la première table de la jointure), et une jointure externe droite tous ceux de la table de droite (la deuxième table de la jointure).

Jointures externes complètes : toutes les données, combinées quand cela est réalisable

Dans certains systèmes, une jointure externe peut inclure toutes les lignes des deux tables, avec les lignes combinées lorsqu’elles correspondent. Dans ce cas, il s’agit d’une jointure externe complète qu’Access ne prend pas en charge de manière explicite. Cependant, vous pouvez utiliser une jointure croisée et des critères pour obtenir le même effet.

Jointures croisées : toutes les données, combinées de toutes les manières possibles

La plupart du temps, une jointure croisée est un effet secondaire de l’ajout de deux tables à une requête en oubliant de les joindre. Access interprète cela comme une volonté de votre part de voir tous les enregistrements d’une table combinés avec ceux de l’autre table, c’est-à-dire toutes les combinaisons d’enregistrements possibles. Du fait qu’aucune donnée ne peut être combinée, ce type de jointure produit rarement des résultats utiles. Il existe néanmoins certains cas dans lesquels une jointure croisée répondra exactement à vos besoins.

Jointures inégales : identique à la jointure régulière, mais en utilisant une autre comparaison pour combiner les lignes

Les jointures inégales utilisent un opérateur différent du signe égal (=) pour comparer les valeurs et déterminer s’il faut combiner les données et de quelle manière. Les jointures inégales ne sont pas prises en charge de manière explicite, mais vous pouvez utiliser une jointure croisée et des critères pour obtenir le même effet.

Afficher les lignes à l’endroit où il existe une valeur commune dans les deux tables jointes

Si vous voulez seulement afficher les lignes ayant de valeurs correspondantes dans le champ joint, utilisez une jointure interne. Access crée les jointures internes automatiquement.

Les jointures internes sont le plus courants type de jointure. Indiquent à une requête que les lignes d’une la jointure des tables correspondent à des lignes dans l’autre table, sur la base de données dans les champs joints. Lorsqu’une requête avec une jointure interne est exécutée, uniquement les lignes où il existe une valeur commune dans les deux tables jointes seront incluses dans les opérations de requête.

Comment doit-on utiliser une jointure interne ?

En général, vous n’avez besoin d’effectuer aucune opération particulière pour utiliser une jointure interne. Si les tables que vous ajoutez à une requête ont déjà des relations, Access crée automatiquement une jointure interne entre chaque paire de tables liées quand vous ajoutez les tables. Si l’intégrité référentielle est appliquée, Access affiche également un « 1 » au-dessus de la ligne de jointure pour indiquer la table qui se trouve du côté « un » d’une relation un-à-plusieurs et le symbole infini () pour indiquer la table qui se trouve du côté « plusieurs ».

Même si vous n’avez pas créé de relations, Access crée automatiquement des jointures internes si vous ajoutez deux tables à une requête et ces tables ont chacune un champ avec le même ou type de données compatible et des champs de jointure est une clé primaire. Les symboles « un » et « plusieurs » ne sont pas affichés dans ce cas, car l’intégrité référentielle n’est pas appliquée.

Si vous ajoutez des requêtes à votre requête et n’avez pas créé des relations entre ces requêtes, Access ne crée pas automatiquement les jointures internes entre ces requêtes ou entre les tables et requêtes. En règle générale, vous devez créer vous-même. Vous créez une jointure interne en faisant glisser un champ à partir d’une source de données à un champ dans une autre source de données. Access affiche une ligne entre les deux champs pour montrer qu’une jointure a été créée.

Syntaxe SQL pour une jointure interne

Les jointures internes sont spécifiées en code SQL dans la clause FROM, comme indiqué ci-dessous :

À partir de table1 jointure interne table2 sur la table1. champ1 comparer table2. champ2

L’opération INNER JOIN (jointure interne ) comprend les parties suivantes :

Élément

Description

table1, table2

Nom des tables dont les enregistrements sont combinés.

champ1, champ2

Noms des champs joints. S’ils ne sont pas numériques, les champs doivent avoir le même type de données et contenir des données de nature identique, mais leurs noms peuvent être différents.

comparer

Tout opérateur de comparaison relationnel tel que : "=," "<," ">," "<=," ">=," ou "<>."

Pour plus d’informations sur la syntaxe des jointures internes, voir la rubrique INNER JOIN, opération.

Haut de la Page

Afficher toutes les lignes d’une table et les lignes correspondantes de l’autre table

Jointures externes indiquent à une requête qui bien que certaines lignes des deux côtés de la jointure correspondent exactement, la requête doit inclure toutes les lignes d’une table et les lignes de l’autre table qui partagent une valeur commune des deux côtés de la jointure.

Les jointures externes peuvent être des jointures externes droites ou gauches. Dans une jointure externe gauche, la requête inclut toutes les lignes de la première table de la clause FROM de l’instruction SQL et seulement les lignes de l’autre table qui contiennent des valeurs communes aux deux tables dans le champ de jointure. Inversement, dans une jointure droite, la requête inclut toutes les lignes de la seconde table de la clause FROM de l’instruction SQL et seulement les lignes de l’autre table qui contiennent des valeurs communes aux deux tables dans le champ de jointure.

Remarque : Vous pouvez facilement déterminer quelle table est la table de gauche ou la table de droite dans une jointure donnée en double-cliquant sur la jointure, puis vous recherchez dans la boîte de dialogue Propriétés de la jointure. Vous pouvez également basculer en mode SQL et puis examinez la clause FROM.

Étant donné que certaines des lignes d’une table d’un côté de la jointure externe n’auront pas de lignes correspondantes dans l’autre table, certains des champs seront vides dans les résultats de la requête.

Comment doit-on utiliser une jointure externe ?

Vous créez une jointure externe en modifiant une jointure interne existante. S’il n’en existe aucune, créez-en une et changez-la en jointure externe.

Changer une jointure interne en jointure externe

  1. En mode Création de requête, double-cliquez sur la jointure que vous voulez changer.

    La boîte de dialogue Propriétés de la jointure apparaît.

  2. Dans la boîte de dialogue Propriétés de la jointure, notez les choix proposés à côté de l' option 2 et l’option 3.

  3. Cliquez sur l’option que vous voulez utiliser, puis sur OK.

  4. Access affiche la jointure et une flèche pointant de la source de données dont toutes les lignes seront incluses vers la source de données dont seulement les lignes qui répondent aux conditions de la jointure seront incluses.

Jointures externes ambiguës

Si vous créez une requête qui contient une jointure gauche et une jointure interne, Access peut ne pas être en mesure de déterminer qui participer à une opération à effectuer en premier. Étant donné que les résultats sont différentes selon que la jointure gauche ou la jointure interne est exécutée en premier, Access affiche un message d’erreur :

Pour corriger cette erreur, vous devez modifier la requête afin qu’il clarifier quelle jointure à effectuer en premier.

Syntaxe SQL pour une jointure externe

Les jointures externes sont spécifiées en code SQL dans la clause FROM, comme indiqué ci-dessous :

À partir de table1 [gauche | JOINTURE droite] table2
sur table1.field1 comparer table2.field2

Les opérations LEFT JOIN (jointure gauche) et RIGHT JOIN (jointure droite) comprennent les parties suivantes :

Élément

Description

table1, table2

Nom des tables dont les enregistrements sont combinés.

champ1, champ2

Noms des champs joints. Les champs doivent avoir le même type de données et contenir des données de nature identique, mais leurs noms doivent être différents.

comparer

Tout opérateur de comparaison relationnel tel que : "=," "<," ">," "<=," ">=," ou "<>."

Pour plus d’informations sur la syntaxe des jointures externes, voir la rubrique LEFT JOIN, RIGHT JOIN, opérations.

Haut de la Page

Afficher toutes les lignes des deux tables et les joindre à l’endroit où il existe une valeur commune

Lorsque vous souhaitez afficher toutes les lignes des deux tables et y participer en fonction des valeurs courantes, vous utilisez une jointure externe complète. Access ne prend pas explicitement en charge les jointures externes complètes, mais vous pouvez obtenir le même effet à l’aide d’une requête union. La procédure suivante explique comment faire cela, mais si vous souhaitez plus d’informations sur les requêtes union, voir la section Voir aussi.

Pour utiliser une requête union pour effectuer une jointure externe complète :

  1. Créez une requête comportant une jointure externe gauche sur le champ à utiliser pour une jointure externe complète.

  2. Sous l’onglet Accueil, dans le groupe Affichages, cliquez sur Affichage, puis sur Mode SQL.

  3. Appuyez sur CTRL + C pour copier le code SQL.

  4. Supprimez le point-virgule à la fin de la clause FROM et appuyez sur ENTRÉE.

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

    Remarque : N’utilisez pas le mot-clé ALL si vous utilisez une requête Union pour effectuer une jointure externe complète.

  6. Appuyez sur CTRL + V pour coller le code SQL que vous avez copié à l’étape 3.

  7. Dans le code collé, modifiez LEFT JOIN en RIGHT JOIN.

  8. Supprimez le point-virgule à la fin de la seconde clause FROM, puis appuyez sur ENTRÉE.

  9. Ajoutez une clause WHERE indiquant que la valeur du champ de jointure est NULL dans la première table répertoriée dans la clause FROM (la table de gauche).

    Par exemple, si la clause FROM est :

    FROM Products RIGHT JOIN [Order Details] 
    ON Products.ID = [Order Details].[Product ID]

    Vous souhaitez ajouter la clause WHERE suivante :

    WHERE Products.ID IS NULL

  10. Tapez un point-virgule (;) à la fin de la clause WHERE pour indiquer la fin de la requête Union.

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

Jointures croisées

Jointures croisées sont différentes des jointures internes et externes dans la mesure où ils ne sont pas explicitement représentées dans Access. Dans une jointure croisée, chaque ligne d’une table est associé à chaque ligne d’une autre table, ce qui crée de ce qui est appelé un produit cartésien ou un produit cartésien. Chaque fois que vous exécutez une requête comportant des tables qui ne sont pas explicitement jointes, le résultat est un produit croisé. Les jointures croisées sont en général accidentelles, mais il existe des cas où ils peuvent être utiles.

Dans quel cas doit-on utiliser une jointure croisée ?

Si vous souhaitez examiner toutes les combinaisons possibles de lignes entre deux tables ou requêtes, utiliser une jointure croisée. Par exemple, supposons que votre entreprise a-t-elle eu une année exceptionnelle, et que vous envisagez accorder des remises à vos clients. Vous pouvez créer une requête qui additionne les achats de chaque client, créer un petit tableau comportant plusieurs pourcentages de remise possibles et combiner les deux dans une autre requête qui effectue une jointure croisée. Vous retrouvez avec une requête qui affiche un ensemble de remboursements hypothétiques pour chaque client.

Comment doit-on utiliser une jointure croisée ?

Une jointure croisée est générée à tout moment inclure des tables ou requêtes dans votre requête et ne pas créer au moins une jointure explicite pour chaque table ou requête. Access combine toutes les lignes de chaque table ou requête qui n’est pas explicitement joint à n’importe quel autre table ou requête pour chaque ligne dans les résultats. Considérez le scénario de remise à partir du paragraphe précédent. Supposons que vous avez 91 clients, et que vous souhaitez examiner cinq pourcentages de remise possibles. Votre jointure croisée génère 455 lignes (le produit de 91 et 5).

Comme vous pouvez l’imaginer, jointures croisées accidentelles peuvent créer grand nombre de lignes dans les résultats d’une requête. En outre, ces résultats sont en général inutiles, car si vous ne souhaitez réellement combiner chaque ligne à toutes les autres lignes, la plupart des lignes combinées qui s’affichent dans les résultats ne permettra pas sensé. Enfin, les requêtes qui utilisent des jointures croisées accidentelles peuvent prendre beaucoup de temps à s’exécuter.

Jointure croisée accidentelle en mode Création de requête
Jointure croisée accidentelle en mode Création de requête.

1. les champs entourés doivent être jointes entre eux.

Produit croisé accidentel
Produit croisé renvoyé par la jointure croisée accidentelle décrite ci-dessus.

1. Notez le nombre d’enregistrements volumineux.

Résultat corrigé de la requête
Les résultats après la création de la jointure correcte.

1. Notez que le nombre d’enregistrements est beaucoup plus petit.

Haut de la Page

Joindre des tables en fonction de l’inégalité des valeurs de champ

Les jointures ne doivent pas obligatoirement être basées sur l’équivalence des champs joints. Une jointure peut être basée sur un opérateur de comparaison, tel que supérieur à (>), inférieur à (<) ou différent de (<>). Les jointures qui ne sont pas basées sur une équivalence sont appelées jointures inégales.

Si vous voulez combiner les lignes de deux sources de données qui ont des valeurs de champs différentes, utilisez une jointure inégale. En général, les jointures inégales sont basées sur les opérateurs de comparaison supérieur à (>), inférieur à (<), supérieur ou égal à (>=) ou inférieur ou égal à (<=). Les jointures inégales basées sur l’opérateur de comparaison différent de (<>) peuvent renvoyer autant de lignes que les jointures croisées et les résultats peuvent être difficiles à interpréter.

Comment doit-on utiliser une jointure inégale ?

Les jointures inégales ne sont pas pris en charge en mode Création. Si vous souhaitez utiliser, vous devez le faire à l’aide de mode SQL. Toutefois, vous pouvez créer une jointure en mode Création, passez en mode SQL, rechercher le correspond à opérateur de comparaison (=), puis modifiez par l’opérateur que vous voulez utiliser. Pouvez ouvrir la requête en mode Création, vous vous première rétablir l’opérateur de comparaison à est égal à (=) en mode SQL.

Supprimer une jointure

Si Access crée automatiquement une jointure non désirée, ou si vous en créez une par erreur, par exemple une jointure entre deux champs dont les types de données sont similaires, vous pouvez supprimer la jointure.

  1. Dans la grille de création de la requête, cliquez sur la jointure à supprimer.

  2. Appuyez sur SUPPR.

- ou -

  • Dans la grille de création de requête, avec le bouton droit de la jointure que vous voulez supprimer, puis cliquez sur Supprimer.

Haut de la Page

Remarque : Avertissement traduction automatique : cet article a été traduit par un ordinateur, sans intervention humaine. Microsoft propose cette traduction automatique pour offrir aux personnes ne maîtrisant pas l’anglais l’accès au contenu relatif aux produits, services et technologies Microsoft. Comme cet article a été traduit automatiquement, il risque de contenir des erreurs de grammaire, de syntaxe ou de terminologie.

Voir aussi

Ajouter des enregistrements à une table à l’aide d’une requête Ajout

Combiner les résultats de plusieurs requêtes de sélection à l’aide d’une requête union

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

Créer, modifier ou supprimer une relation

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.

×