Joindre des tables et des requêtes

Joindre des tables et des requêtes

Lorsque vous incluez plusieurs sources de données dans une requête Access, vous utilisez des jointeurs pour limiter les enregistrements que vous souhaitez consulter, en fonction de la relation entre les sources de données. Vous pouvez également utiliser des jointeurs pour combiner des enregistrements provenant des deux sources de données, afin que chaque paire d’enregistrements provenant des sources devienne un enregistrement dans les résultats de la requête.

Cet article traite des différents types de jointeurs et vous explique comment les utiliser dans une requête. Par défaut, une jointie 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 jointe est également créée s’il existe des champs qui correspondent clairement les uns aux autres. Vous pouvez supprimer une jointe créée automatiquement. Cet article fournit des informations de base sur les relations entre les tables, notamment sur la façon d’en créer une.

Remarque : Vous pouvez joindre des requêtes de la même façon que vous joignez des tables, mais vous pouvez également joindre les deux.

Contenu de cet article

Vue d’ensemble

Une base de données est un ensemble de tables de données qui portent des relations logiques les unes par rapport aux autres. Les relations vous sont permet de connecter des tables par des champs qu’elles ont en commun. Une table 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 jointie.

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

Les jointeurs ont le même comportement que les critères de requête en ce qu’elles établissent des règles que les données doivent correspondre pour être incluses dans les opérations de requête. Contrairement aux critères, les jointeurs spécifient également que chaque paire de lignes qui répondent aux conditions de jointeur sera combinée dans le recordset pour former une seule ligne.

Il existe quatre types de jointages de base : les jointeurs internes, les jointeurs externes, les jointeurs croisés et les jointeurs inégales. Cet article décrit chaque type de jointité que vous pouvez utiliser, pourquoi vous utilisez chaque type et comment créer les jointeurs.

Les jointries sont pour interroger les relations entre les tables : indication de la façon dont les données de deux sources peuvent être combinées en fonction de valeurs de données qu’elles ont en commun. Voici une illustration d’une jointrie en mode Création de requête, avec les propriétés de la jointrie 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 jointe. Double-cliquez sur une jointeur pour ouvrir la boîte de dialogue Propriétés de la jointeur (décrite) et examinez ou modifiez la jointeur.

Les jointeurs sont parfois directionnels. Cette zone de la boîte de dialogue vous indique quelle table se trouve dans la jointeur et quels champs sont utilisés pour joindre les tables.

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

Les champs des deux tables peuvent être utilisés, et les données liées à une tâche donnée sont affichées à partir de chacune d’elles. Dans une jointage interne, aucune autre donnée n’est incluse. Dans une jointie externe, les enregistrements non liés d’une table sont également inclus dans les résultats de requête.

Haut de page

Types de jointeurs

Il existe quatre types de jointages de base : les jointeurs internes, les jointeurs externes, les jointeurs croisés et les jointeurs inégales. Les jointeurs croisés et les jointeurs inégales sont des types de jointeurs avancés qui sont rarement utilisés, mais vous devez les connaître pour comprendre entièrement le fonctionnement des jointeurs.

Jointeurs internes : uniquement les données liées des deux tables combinées

Une jointage interne est une jointage dans laquelle Access inclut uniquement les données d’une table s’il existe des données correspondantes dans la table liée, et inversement. La plupart du temps, vous utilisez des jointeurs internes. Lorsque vous créez une jointage sans spécifier son type, Access part du principe que vous souhaitez une jointage interne. Les jointeurs internes sont utiles, car ils vous permet de combiner les données de deux sources en fonction de valeurs partagées, de sorte que vous ne voyez les données qu’en cas d’image complète.

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

Une jointeur externe est comme une jointeur interne, mais ajoute les lignes restantes d’une des tables. Les jointeurs externes sont directionnels : une jointisation externe gauche inclut tous les enregistrements de la table de gauche (la première table de la jointisation), et une jointisation externe droite comprend tous les enregistrements de la table de droite (la deuxième table de la jointisation).

Jointeurs externes complets : toutes les données, combinées lorsque c’est possible

Dans certains systèmes, une jointeur externe peut inclure toutes les lignes des deux tables, les lignes combinées lorsqu’elles correspondent. Cette jointité externe complète n’est pas prise en charge de manière explicite par Access. Toutefois, vous pouvez utiliser une jointe croisée et des critères pour obtenir le même effet.

Jointeurs croisés : toutes les données, combinées autant que possible

La plupart du temps, une jointie croisée est un effet secondaire d’ajout de deux tables à une requête, puis d’une jointrie. Access interprète cela comme signifie que vous voulez voir chaque enregistrement d’une table combiné avec chaque enregistrement de l’autre table (chaque combinaison possible d’enregistrements). Étant donné qu’aucune donnée ne peut être combinée, ce type de joint automatiquement produit rarement des résultats utiles. Toutefois, dans certains cas, il peut être nécessaire d’associer une jointe croisée à la plupart des personnes.

Jointeurs non qualifiés : comme une jointie normale, mais en utilisant une comparaison différente pour combiner des lignes

Les jointeurs non qualifiés utilisent un opérateur autre que le signe égal (=) pour comparer des valeurs et déterminer si et comment combiner les données. Les jointeurs non qualifiés ne sont pas explicitement pris en charge, mais vous pouvez utiliser une jointée croisée et des critères pour obtenir le même effet.

Afficher les lignes où existe une valeur commune dans les deux tables jointes

Si vous souhaitez afficher uniquement les lignes qui ont des valeurs correspondantes dans le champ joint, utilisez une jointeur interne. Access crée automatiquement des jointeurs internes.

Les jointures internes sont les plus courantes. Ils indiquent à une requête que les lignes d’une des tables jointes correspondent aux lignes de l’autre table, sur la base des données dans les champs joints. Lorsqu’une requête avec une jointie interne est exécuté, seules les lignes pour laquelle il existe une valeur commune dans les deux tables jointes seront incluses dans les opérations de requête.

Comment utiliser une jointage interne ?

La plupart du temps, vous n’avez rien à faire pour utiliser une jointage interne. Si les tables que vous ajoutez à une requête ont déjà des relations, Access crée automatiquement une jointie interne entre chaque paire de tables liées, lorsque 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 jointeurs internes si vous ajoutez deux tables à une requête et que chacune d’elles a un champ dont le type de données est identique ou compatible et que l’un des champs de jointage est un clé primaire. Dans ce cas, les symboles « un » et « plusieurs » ne s’affichent pas, car l’intégrité referentielle n’est pas appliquée.

Si vous ajoutez des requêtes à votre requête et que vous n’avez pas créé de relations entre elles, Access ne crée pas automatiquement de jointries internes entre ces requêtes ou entre les requêtes et les tables. En règle générale, vous devez les créer vous-même. Pour créer une jointage interne, faites glisser un champ d’une source de données vers un champ d’une autre source de données. Access affiche une ligne entre les deux champs pour indiquer qu’une jointure a été créée.

SQL syntaxe d’une jointage interne

Les jointeurs internes sont spécifiés dans la SQL clause FROM, comme illustré ci-dessous :

FROM table1 INNER JOIN table2 ON table1.field1 compare table2.field2

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

Partie

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.

comparaison

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

Pour plus d’informations sur la syntaxe de jointage interne, voir la rubrique Opération inner JOIN.

Haut de page

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

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

Les jointeurs externes peuvent être des jointeurs externes gauches ou des jointeurs externes droites. Dans une jointeur externe gauche, la requête inclut toutes les lignes de la première table dans la clause SQL statement FROM et uniquement les lignes de l’autre table où le champ de jointage contient les valeurs communes aux deux tables. Dans une jointeur externe droite, la requête inclut toutes les lignes de la deuxième table dans la clause SQL statement FROM et uniquement les lignes de l’autre table où le champ de jointage contient les valeurs communes aux deux tables.

Remarque : Vous pouvez facilement savoir quelle table est la table de gauche ou la table de droite dans une jointeur donnée en double-cliquant sur la jointeur, puis en regardant dans la boîte de dialogue Propriétés de la jointeur. Vous pouvez également basculer vers SQL’affichage des vues, puis examiner la clause FROM.

Étant donné que certaines lignes d’un côté d’une jointie externe ne peuvent pas avoir de lignes correspondantes de l’autre table, certains des champs renvoyés dans les résultats de la requête de cette autre table sont vides lorsque les lignes ne correspondent pas.

Comment utiliser une jointe externe ?

Vous créez une jointage externe en modifiant une jointage interne existante. S’il n’existe aucune jointage interne, vous en créez une, puis vous la modifiez en jointe externe.

Modifier une jointage interne en jointage externe

  1. En mode Création de requête, double-cliquez sur la jointrie à modifier.

    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 jointeur, notez les choix répertorié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 jointur et affiche une flèche qui pointe à partir de la source de données où toutes les lignes seront incluses dans la source de données où seules les lignes qui répondent à la condition de jointage seront incluses.

Jointeurs externes ambigus

Si vous créez une requête qui contient une jointie gauche (LEFT JOIN) et une jointrie interne (INNER JOIN), Access risque de ne pas pouvoir déterminer l’opération de jointage à effectuer en premier. Étant donné que les résultats diffèrent selon que la jointë gauche ou interne est effectuée en premier, Access affiche un message d’erreur :

Pour corriger cette erreur, vous devez modifier la requête afin qu’elle soit claire et que la jointie à exécuter en premier.

SQL syntaxe des entrées externes

Les jointeurs externes sont spécifiés dans SQL clause FROM, comme illustré ci-dessous :

FROM table1 [ LEFT | DROITE ] JOIN table2
ON table1.field1 compare table2.field2

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

Partie

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.

comparaison

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

Pour plus d’informations sur la syntaxe de jointage externe, voir la rubrique Opérations LEFT JOIN ou RIGHT JOIN.

Haut de page

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

Lorsque vous voulez afficher toutes les lignes de deux tables et les joindre sur la base de valeurs communes, vous devez utiliser une jointeur externe complète. Access ne prend pas explicitement en charge les jointeurs 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, mais si vous voulez plus d’informations sur les requêtes Union, consultez la section Voir aussi.

Pour utiliser une requête Union afin d’effectuer une jointie externe complète :

  1. Créez une requête qui dispose d’une jointrie externe gauche sur le champ que vous souhaitez utiliser pour une jointie 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 SQL code.

  4. Supprimez le point-virgule à la fin de la clause FROM, puis appuyez sur Entrée.

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

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

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

  7. Dans le code que vous avez passé, changez 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 qui spécifie que la valeur du champ de jointisation est NULL dans la première table répertoriée dans la clause FROM (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. Taper un point-virgule (;) à la fin de la clause WHERE pour indiquer la fin de la requête Union.

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

Jointeurs croisés

Les jointeurs croisés sont différents des jointeurs internes et externes en ce qu’elles ne sont pas explicitement représentées dans Access. Dans une jointeur croisée, chaque ligne d’une table est combinée à chaque ligne d’une autre table, ce qui se nomme un produit croisé ou un produit cartésien. Chaque fois que vous exécutez une requête qui contient des tables qui ne sont pas jointes de manière explicite, un produit croisé est le résultat. Les jointeurs croisés sont généralement involontaires, mais dans certains cas, ils peuvent être utiles.

Pourquoi utiliser une jointe croisée ?

Si vous souhaitez examiner chaque combinaison possible de lignes entre deux tables ou requêtes, utilisez une jointeur croisée. Par exemple, supposons que votre entreprise ait connu une année spectaculaire et que vous envisagez de donner des remises à vos clients. Vous pouvez créer une requête qui additionne les achats effectués par chaque client, créer une petite table avec plusieurs pourcentages de remise possibles et combiner les deux dans une autre requête qui effectue une jointie croisée. Vous vous retrouvez avec une requête qui affiche un ensemble de remises hypothétiques pour chaque client.

Comment utiliser une jointe croisée ?

Une jointie croisée est produite chaque fois que vous incluez des tables ou des requêtes dans votre requête et que vous ne créez pas au moins une jointie explicite pour chaque table ou requête. Access combine chaque ligne de chaque table ou requête qui n’est pas explicitement jointe à une autre table ou requête sur une ligne sur deux dans les résultats. Prenons le scénario de remise du paragraphe précédent. Supposons que vous avez 91 clients et que vous souhaitez examiner cinq pourcentages de remise possibles. Votre jointeur croisée produit 455 lignes (produit de 91 et 5).

Comme vous pouvez l’imaginer, les jointeurs croisés involontaires peuvent créer un grand nombre de lignes dans les résultats de votre requête. En outre, ces résultats sont généralement peu peu logiques, car si vous n’avez pas réellement l’intention de combiner toutes les lignes sur deux, la plupart des lignes combinées qui apparaissent dans les résultats n’auront aucun sens. Enfin, l’utilisation de jointeurs croisés involontaires peut prendre beaucoup de temps.

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

1. Les champs en cercle doivent être joints les uns aux autres.

Produit croisé accidentel

1. Notez le nombre très élevé d’enregistrements.

Résultat corrigé de la requête

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

Haut de page

Joindre des tables sur la base d’une indiquité de valeurs de champ

Les jointeurs ne doivent pas être basés sur l’équivalence des champs joints. Une jointur peut être basée sur n’importe quel opérateur de comparaison, tel que supérieur à (>), inférieur à (<), ou n’est pas égal (<>). Les jointeurs non fondées sur l’équivalence sont appelés jointes inégales.

Si vous voulez combiner les lignes de deux sources de données en fonction de valeurs de champs qui ne sont pas égales, utilisez une jointie inégale. En règle générale, les jointions inégales sont basées sur les opérateurs de comparaison supérieurs à (>), inférieurs ou égaux (<), supérieurs ou égaux à (>=), ou inférieurs ou égaux à (<=). Des jointeurs non égaux basés sur l’opérateur (<>) peuvent renvoyer presque autant de lignes que de jointeurs croisés, et les résultats peuvent être difficiles à interpréter.

Comment utiliser une jointe non égale ?

Les jointeurs non qualifiés ne sont pas pris en charge en mode Création. Si vous souhaitez les utiliser, vous devez utiliser l’affichage SQL’affichage. Toutefois, vous pouvez créer une jointur en mode Création, passer en mode SQL, rechercher l’opérateur de comparaison égal(=),puis la modifier pour utiliser l’opérateur que vous voulez utiliser. Après cela, vous ne pouvez ouvrir la requête en mode Création que si vous changez de nouveau l’opérateur de comparaison pour qu’il égale(=)en SQL vue.

Supprimer une jointe

Si Access crée automatiquement une jointeur dont vous ne voulez pas, ou si vous créez une jointille par erreur (par exemple, une jointeur entre deux champs dont les types de données sont différents), vous pouvez supprimer la jointeur.

  1. Dans la grille de création de requête, cliquez sur la jointie que vous voulez supprimer.

  2. Appuyez sur Supprimer.

- ou -

  • Dans la grille de création de requête, cliquez avec le bouton droit sur la jointie à supprimer, puis cliquez sur Supprimer.

Haut de page

Voir aussi

Ajouter des

Combinant

tables

Créer,

Besoin d’aide ?

Développez vos compétences dans Office
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.

×