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.

Dans cet article

Vue d’ensemble

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

Présentation

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.

Les jointures ont un comportement similaire à celui des critères d'une requête, dans la mesure où elles établissent des conditions auxquelles les données doivent répondre pour être incluses dans les opérations de la requête. En revanche, contrairement aux critères, les jointures spécifient que les paires de lignes qui répondent aux conditions qu'elles ont établies seront combinées en une seule ligne dans le jeu d'enregistrement.

Il existe principalement quatre types de jointures : les jointures internes, externes, croisées et inégales. Cet article décrit les différents types de jointures, indique dans quel cas vous pouvez les utiliser et comment créer les jointures.

Haut de la Page

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.

Il s'agit du type de jointure le plus courant. Les jointures internes indiquent à une requête que les lignes d'une des tables jointes correspondent aux lignes de l'autre table, car les champs joints comportent les mêmes données. Lorsqu'une requête avec une jointure interne est exécutée, seules les lignes comportant une valeur qui existe dans les deux tables jointes seront incluses dans les opérations de la 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 que ces tables comportent au moins un champ avec un type de données identique ou compatible et enfin que l'un 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 alors que vous n'avez pas créé de relations entre elles, Access ne crée aucune jointure entre ces requêtes et n'en crée pas non plus entre les requêtes et les tables. Vous devez alors créer les jointures vous-même. Pour cela, il vous suffit de faire glisser un champ d'une source de données sur un champ d'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 se compose des éléments suivants :

Composant

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

Les jointures externes indiquent à une requête que 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 qui partagent une même valeur 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 se 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 aisément savoir quelle table est la table de gauche ou la table de droite dans une jointure donnée, en double-cliquant sur la jointure puis en examinant la boîte de dialogue Propriétés de la jointure. Vous pouvez également passer en vue SQL et examiner 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 de 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 et RIGHT JOIN se composent les éléments suivants :

Composant

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 afin d'effectuer une jointure externe complète.

  1. Créez une requête possédant une jointure externe gauche sur le champ que vous voulez 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, puis appuyez sur Entrée.

  5. Tapez UNION, puis appuyez sur ENTRÉE.

    Remarque : N'utilisez pas le mot clé ALL lorsque vous utilisez une requête union pour effectuer une jointure externe complète.

  6. Appuyez sur les touches 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 deuxième 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 devez 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. Dans l'onglet Créer, cliquez sur Résultats dans le groupe Outils.

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 voulez examiner chaque combinaison possible de lignes entre deux tables ou deux requêtes, utilisez une jointure croisée. Supposons, par exemple, que votre société a connu une année exceptionnelle et que vous envisagez d'accorder des remises à vos clients. Créez pour cela une requête qui additionne les achats de chaque client et créez une petite table comportant plusieurs pourcentages de remise possibles, puis combinez les deux dans une autre requête qui effectue une jointure croisée. Vous obtiendrez comme résultat les remises hypothétiques pour chaque client.

Comment doit-on utiliser une jointure croisée ?

Une jointure croisée est produite à chaque fois que vous incluez des tables ou des requêtes dans une requête sans créer au moins une jointure explicite pour chaque table ou chaque requête. Access combine alors chaque ligne de chaque table ou requête, qui n'est pas explicitement jointe à une autre table ou requête, à chaque ligne des autres tables ou requêtes. À titre d'exemple, supposons que, dans le même scénario que le paragraphe précédent, vous disposez de 91 clients et que vous envisagez cinq pourcentages de remise possibles pour ces derniers. La jointure croisée produira alors 455 lignes (le produit de 91 et de 5).

Comme vous pouvez l'imaginer, les jointures croisées accidentelles peuvent créer un nombre très élevé de lignes dans les résultats de la requête. De plus, ces résultats sont en général inutiles, car, à moins que vous ne vouliez combiner chaque ligne à une autre, la plupart des lignes combinées dans les résultats n'auront aucun sens. Enfin, les requêtes qui utilisent des jointures croisées accidentelles peuvent avoir une très longue durée d'exécution.

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 joints.

Produit croisé accidentel
Produit croisé renvoyé par la jointure croisée accidentelle décrite précédemment.

1. Notez le nombre très important d'enregistrements.

Résultat corrigé de la requête
Résultats après que la jointure correcte a été créée.

1. Notez que le nombre d'enregistrements est bien 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 non égale. En général, les jointures non é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 prises en charge en mode Création. Si vous voulez les utiliser, vous devez recourir au mode SQL. Vous pouvez également créer une jointure en mode Création, puis basculer en mode SQL, rechercher l'opérateur de comparaison égal (=) et le remplacer par l'opérateur que vous voulez utiliser. Mais pour pouvoir ouvrir la requête en mode Création, vous devez d'abord rétablir l'opérateur de comparaison é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 SUPPRESSION.

– ou –

  • Dans la grille de création de la requête, cliquez avec le bouton droit sur 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.

×