MS Access - Jointures

Une base de données est un ensemble de tables de données qui permettent des relations logiques entre elles. Vous utilisez des relations pour connecter des tables par des champs qu'elles ont en commun. Une table peut faire partie de n'importe quel nombre de relations, mais chaque relation a toujours exactement deux tables. Dans une requête, une relation est représentée par unJoin.

Qu'est-ce que Join

Une jointure spécifie comment combiner des enregistrements de deux ou plusieurs tables dans une base de données. Conceptuellement, une jointure est très similaire à une relation de table. En fait, les jointures servent à interroger les relations avec les tables.

Voici les deux types de jointures de base dont nous parlerons dans ce chapitre -

  • La jointure intérieure
  • La jointure externe

Les deux peuvent facilement être créés à partir d'un queries design view.

Jointure interne

Comprenons maintenant Inner Join -

  • Le type de jointure le plus courant est une jointure interne qui est également le type de jointure par défaut dans Microsoft Access.
  • Inner Join affichera uniquement les lignes ou les enregistrements où les champs joints des deux tables sont égaux.
  • Ce type de jointure examine ces champs communs et les données qu'ils contiennent. Il n'affiche que les correspondances.

Jointure externe

Comprenons maintenant ce qu'un Outer Join est -

  • Une jointure externe affiche toutes les lignes d'une table et uniquement les lignes ou enregistrements de l'autre table où les champs joints sont égaux.
  • En d'autres termes, une jointure externe affiche toutes les lignes d'une table et uniquement les lignes correspondantes de l'autre table.

Il existe également d'autres types de jointure -

Jointure externe gauche et jointure externe droite

Comprenons maintenant Left Outer Join et Right Outer Join -

  • Vous pouvez choisir le tableau qui affichera toutes les lignes.
  • Vous pouvez créer une jointure externe gauche qui inclura toutes les lignes de la première table.
  • Vous pouvez créer une jointure externe droite qui inclura toutes les lignes de la deuxième table.

Passons maintenant à la Create et créez une requête à partir de Design View. SélectionnertblProjects et tblTasks et fermez la boîte de dialogue Afficher la table comme dans la capture d'écran suivante.

Ajouter le ProjectName champ de tblProjects, et TaskTitle, StartDate et DueDate de tblTasks table.

Lançons maintenant la requête.

Nous affichons uniquement les enregistrements de quelques projets. Certains de ces projets comportent de nombreuses tâches associées à ce projet et ces informations sont liées parProjectID champ.

  • Lorsque nous créons cette requête dans Microsoft Access, Access prend cette relation à partir des relations que nous avons créées.

  • Par défaut, il crée ce qu'on appelle un Inner Join between these two fields, entre ces deux tableaux, et c'est ainsi qu'il met en relation ces informations à partir de ces deux tableaux.

  • Il ne nous montre que les correspondances, donc lorsque nous exécutons cette requête, de nombreux autres projets sont répertoriés dans tblProjects qui n'apparaissent pas dans le cadre de nos enregistrements définis dans cette requête, et c'est à cause de la manière dont ces deux tables sont jointes, via cette jointure interne, qui est encore une fois cette jointure par défaut pour toute requête.

Cependant, si vous souhaitez modifier la relation, Supposons que vous souhaitiez créer une jointure externe, ou en d'autres termes, afficher tous les projets de tblProjects, chaque enregistrement qui se trouve dans cette table, ainsi que toutes les tâches de tblTasks- Ouvrir les propriétés de jointure; nous pouvons le faire simplement en double-cliquant sur la ligne de relation.

Access affichera le nom de la table de gauche et le nom de la table de droite dans la boîte de dialogue Propriétés de jointure.

  • Le nom de la colonne de gauche et le nom de la colonne de droite et le premier bouton radio ne doivent inclure que les lignes où les champs de jointure des deux tables sont égaux et c'est la jointure interne et c'est ce qui est sélectionné par défaut lors de la création de relations, lors de la création d'une jointure dans la requête, mais vous pouvez le modifier.

  • Nous avons également deux autres options; nous pouvons inclure tous les enregistrements detblProjects, et seuls les enregistrements de tblTasks où les champs joints sont égaux et celui-ci est Left Outer Join.

  • Nous avons une troisième option, inclure tous les enregistrements de tblTasks et uniquement les enregistrements de tblProjects où les champs joints sont égaux et celui-ci est Right Outer Join.

Ce sont les différents types de jointures que vous pouvez créer facilement à partir de la vue Conception. Laissez-nous sélectionner la deuxième option, qui est Jointure externe gauche, et cliquez surOk.

Examinons maintenant les autres étapes -

Lorsque vous regardez la ligne de relation, vous verrez une petite flèche pointant vers ProjectID dans tblTasks. Lorsque vous exécutez cette requête, vous verrez les résultats suivants.

Comme vous pouvez le voir, il nous montre chaque nom de projet, qu'il ait ou non une tâche associée. Vous verrez également un tas de champs nuls. Tout cela sera vide car il n'y a aucune information connexe danstblTasks, d'où viennent ces champs. Passons maintenant à laDesign View à nouveau et double-cliquez sur la ligne de relation.

Dans la boîte de dialogue Propriétés de la jointure, sélectionnez la troisième option qui correspond à la jointure externe droite et cliquez sur Ok.

Maintenant, regardez notre ligne de relation. Vous verrez qu'une petite flèche pointe maintenant versProjectID dans tblProjects. Lorsque vous exécutez cette requête, vous verrez les résultats suivants.

Auto-jointures

L'auto-jointure est un autre type de jointure. Une auto-jointure met en relation les champs correspondants de la même table. Par exemple, regardez la table de l'employé avec un champ de superviseur, qui fait référence au même type de numéro stocké dans un autre champ de la même table - l'ID d'employé.

Si nous voulions savoir qui est le superviseur de Kaitlin Rasmussen, nous devrons prendre le numéro stocké dans ce champ de superviseur et le rechercher dans le même tableau exact dans ce champ d'identification d'employé afin de savoir que Charity Hendricks est le superviseur.

Cette table n'est pas la structure idéale pour une base de données relationnelle car elle n'est pas normalisée.

Si nous avons une situation où nous voulons créer une requête qui répertorie simplement les noms des employés à côté des noms de leurs superviseurs, il n'y a pas de moyen facile de l'interroger à moins de créer une auto-jointure.

Pour voir une auto-jointure, créez une table avec les champs suivants et entrez des données.

Ici, nous voulons créer à nouveau une liste avec le prénom de l'employé puis le nom du superviseur. Créons une requête à partir duquery design view.

Maintenant, ajoutez tblEmployees les tables.

Fermez cette boîte de dialogue.

Maintenant, ajoutez le prénom et le nom de nos employés.

Nous avons maintenant besoin d'un moyen de créer une relation entre cette table et elle-même. Pour ce faire, nous devons ouvrirthe show table dialog box et ajoutez tblEmployees une fois de plus.

Nous avons créé une autre copie de la même table dans cette vue de requête. Maintenant, nous devons créer une auto-jointure. Pour ce faire, cliquez sur Superviseur danstblEmployees table et maintenez le bouton de la souris et déposez-le juste au-dessus du EmployeeID dans cette table copiée - tblEmployees_1. Ensuite, ajoutez le prénom et le nom de cette table copiée.

Laissez-nous maintenant exécuter votre requête et vous verrez les résultats suivants.

Il affiche les noms des employés à côté des noms de leurs supérieurs. Et c'est ainsi que vous créez une auto-jointure dans Microsoft Access.