Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez joindre une table à elle-même même si la table n’a pas de relation réflexive dans la base de données. Par exemple, vous pouvez utiliser une autojointure pour trouver des paires d’auteurs vivant dans la même ville.
Comme pour toute jointure, une jointure automatique nécessite au moins deux tables. La différence est que, au lieu d’ajouter une deuxième table à la requête, vous ajoutez une deuxième instance de la même table. De cette façon, vous pouvez comparer une colonne dans la première instance de la table à la même colonne de la deuxième instance, ce qui vous permet de comparer les valeurs d’une colonne entre elles. Le concepteur de requêtes et de vues attribue un alias à la deuxième instance de la table.
Par exemple, si vous créez une jointure automatique pour rechercher toutes les paires d’auteurs dans Berkeley, vous comparez la colonne city
dans la première instance de la table par rapport à la colonne city
de la deuxième instance. La requête résultante peut ressembler à ce qui suit :
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
WHERE
authors.city = 'Berkeley'
La création d’une jointure automatique nécessite souvent plusieurs conditions de jointure. Pour comprendre pourquoi, tenez compte du résultat de la requête précédente :
Cheryl Carson Cheryl Carson
Abraham Bennet Abraham Bennet
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
La première ligne est inutile ; il indique que Cheryl Carson vit dans la même ville que Cheryl Carson. La deuxième ligne est tout aussi inutile. Pour éliminer ces données inutiles, vous ajoutez une autre condition conservant uniquement les lignes de résultat dans lesquelles les deux noms d’auteur décrivent différents auteurs. La requête résultante peut ressembler à ceci :
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
<> authors1.au_id
WHERE
authors.city = 'Berkeley'
L'ensemble de résultats est amélioré.
Cheryl Carson Abraham Bennet
Abraham Bennet Cheryl Carson
Mais les deux lignes de résultat sont redondantes. Le premier dit Carson vit dans la même ville que Bennet, et le second dit que le Bennet vit dans la même ville que Carson. Pour éliminer cette redondance, vous pouvez modifier la deuxième condition de jointure de « non égale » à « inférieure à ». La requête résultante peut ressembler à ceci :
SELECT
authors.au_fname,
authors.au_lname,
authors1.au_fname AS Expr2,
authors1.au_lname AS Expr3
FROM
authors
INNER JOIN
authors authors1
ON authors.city
= authors1.city
AND authors.au_id
< authors1.au_id
WHERE
authors.city = 'Berkeley'
L'ensemble de résultats ressemble à ceci :
Cheryl Carson Abraham Bennet
Pour créer manuellement une jointure automatique
Ajoutez au volet du diagramme la table ou l’objet table avec lequel vous souhaitez travailler.
Ajoutez à nouveau la même table, afin que la fenêtre du diagramme affiche deux fois le même objet ou table de valeurs.
Le Concepteur de requêtes et de vues attribue un alias à la deuxième instance en ajoutant un numéro séquentiel au nom de la table. En outre, le Concepteur de requêtes et de vues crée une ligne de jointure entre les deux occurrences de la table ou de l’objet à valeur de table dans le volet Diagramme.
Cliquez avec le bouton droit sur la ligne de jointure et choisissez Propriétés dans le menu contextuel.
Dans la fenêtre Propriétés, cliquez sur condition de jointure et tapez, puis cliquez sur les points de suspension (...) à droite de la propriété.
Dans la boîte de dialogue Joindre, modifiez l’opérateur de comparaison entre les clés primaires en fonction des besoins. Par exemple, vous pouvez remplacer l’opérateur par « inférieur à » (<).
Créez la condition de jointure supplémentaire (par exemple, authors.zip = authors1.zip) en faisant glisser le nom de la colonne de jointure principale dans la première occurrence de la table ou de l'objet de type table et en la déposant sur la colonne correspondante dans la deuxième occurrence.
Spécifiez d’autres options pour la requête, telles que les colonnes de sortie, les conditions de recherche et l’ordre de tri.
Voir aussi
Créer automatiquement Self-Joins (Visual Database Tools)
requête avec jointures (Visual Database Tools)