Types de jointure de bases de données

Les jointures sont des fonctions élémentaires de bases de données que vous pouvez utiliser pour fusionner le contenu de deux tables et/ou bases de données différentes dans un même affichage qui est basé sur des champs qu'elles ont en commun. Pour en savoir plus, reportez-vous à la rubrique À propos des jointures de tables et bases de données.

Lorsque vous utilisez des données de plusieurs tables et/ou bases de données dans votre document, celles-ci doivent être jointes à l’aide de l’un des types de jointure de bases de données.

Les modèles de tables suivantes auxquelles il sera fait référence dans les exemples des différents types de jointure qui sont pris en charge par BarTender. La Table A répertorie les employés et leur identifiant de service et la Table B répertorie les noms de service et l’identifiant associé à leur service. Le champ qu’elles ont en commun, qui est utilisé comme condition de jointure est IDservice.

Table A

Prénom

IDservice

Joe

31

Jane

33

Mark

33

Mary

34

Dan

34

Donna

NULL

Table B

IDservice

NomService

31

Commercial

33

Technique

34

Administration

35

Marketing

BarTender prend en charge les types de jointure suivants pour une jointure de base de données multiples.

Dans l'Assistant de configuration de base de données, les types de jointure disponibles sont limités aux jointures qui sont prises en charge par le fournisseur de base de données. Par exemple, lorsque vous créez une jointure de base de données pour une base de données OLEDB, un seul type de jointure de jointure interne est disponible. Pour contourner cette limitation, vous pouvez créer une connexion de base de données séparée pour chaque table que vous souhaitez, puis créer la jointure en utilisant la page Jointure de bases de données de la boîte de dialogue Configuration de la base de données.

FerméJointure interne

Une jointure interne est un contrôle de jointure courant, qui est souvent traité en tant que valeur par défaut. Dans une jointure interne, les nouveaux résultats sont créés en retournant et en combinant toutes les lignes des tables spécifiées qui comportent des valeurs qui se correspondent dans les champs de jointure que vous avez indiqués. Lorsqu'une ligne de la Table A n'a pas de correspondance dans la Table B, et inversement, celle-ci n'est pas incluse dans les résultats.

Dans nos exemples de table, une jointure interne qui utilise IDservice comme condition de jointure donne le résultat l’ensemble de résultats suivant.

Prénom

IDservice

NomService

Joe

31

Commercial

Jane

33

Technique

Mark

33

Technique

Mary

34

Administration

Dan

34

Administration

Étant donné que l'identifiant de service de Donna porte la valeur NULL dans la Table A, elle n'apparaît pas dans la table de jointure interne finale. De même, si elle était affectée à un identifiant de service non répertorié dans la table B, sa ligne aurait aussi été omise, parce qu’aucune ligne correspondante n’aurait pu lui être associée.

Les valeurs NULL sont traitées différemment des autres valeurs et ne peuvent pas être comparées à une valeur 0 (zéro) ni même à une autre valeur NULL. Pour cette raison, une jointure interne ne peut pas retourner de ligne contenant une valeur NULL dans un champ qui est utilisé dans la condition de jointure, parce qu’il n'y a pas de valeur de champ équivalente.

FerméJointure externe gauche

Une jointure externe gauche diffère d'une jointure interne du fait qu'elle renvoie toutes les lignes de la table de gauche (Table A), même s'il n'y a pas de ligne correspondante dans la table de droite (Table B). Les lignes de la table de gauche qui n'ont pas de ligne correspondante dans la table de droite sont listées dans le résultat de jointure avec des valeurs NULL, ce qui montre qu'il n'y a aucune ligne correspondante dans la table de droite. Dans cet exemple, le résultat répertorie tous les employés, même s'ils ne sont pas affectés à un service, comme pour Donna dans la table ci-dessous.

Prénom

IDservice

NomService

Joe

31

Commercial

Jane

33

Technique

Mark

33

Technique

Mary

34

Administration

Dan

34

Administration

Donna

NULL

NULL

FerméJointure externe droite

Une jointure externe droite se comporte exactement comme la jointure externe gauche, mais l’ordre en est inversé. Ainsi toutes les entrées de la table de droite (Table B) sont retournées dans l’ensemble de résultats, même si aucune ligne correspondante n’est trouvée dans la table de gauche (Table A). Dans cet exemple, le résultat répertorie tous les services, même s'il n'y a pas d’employés affectés à un service, comme pour le service « Marketing » dans la table ci-dessous.

Prénom

IDservice

NomService

Joe

31

Commercial

Jane

33

Technique

Mark

33

Technique

Mary

34

Administration

Dan

34

Administration

NULL

35

Marketing

FerméJointure externe complète

Une jointure externe complète retourne un résultat qui répertorie toutes les lignes des tables de gauche et de droite, même si une ligne n'a pas de correspondance dans l'autre table. Lorsqu'une ligne n'a pas de correspondance dans l'autre table, la valeur manquante est rendue comme NULL. Dans cet exemple, ce résultat inclut aussi bien le service de Marketing (même s'il n'a pas d'employés) que l'employée Donna (bien qu'elle n'appartienne pas à un service).

Prénom

IDservice

NomService

Joe

31

Commercial

Jane

33

Technique

Mark

33

Technique

Mary

34

Administration

Dan

34

Administration

Donna

NULL

NULL

NULL

35

Marketing

Rubriques connexes