LES JOINTURES EN SQL
Published: 2022-11-01 17:11:40

**INTRODUCTION:**

En SQL,la jointure est un moyen de mettre en liaison deux ou plusieurs tables.
La jointure avait été créée pour éviter le problème d’avoir plusieurs colonnes dans une table. 
Imaginez une table qui enregistre les information d’une personne mais parmi ces informations on doit mentionner quelque part les informations de son père et de sa mère.
Dans un premier temps,on sera tenté de créer une table (Personne) avec les colonnes suivantes:id, nom, post-nom, prénom, sexe, age, téléphone, mail, nom-pére, post-nom-pére, prénom-pére, âge-pére, téléphone-pére, mail-pére, nom-mère, post-nom-mère, prénom-mère, âge-mère, téléphone-mère, mail-mère.
Nous nous retrouvons avec cette grande table de plus de 20 colonnes.
La jointure met en avant le principe de diviser pour mieux gérer ; elle réduit le nombre de colonnes mais augmente le nombre de tables pour mieux manipuler les données.
Ainsi, grâce à la jointure nous pouvons avoir 3 tables ici chacune avec un nombre réduit de colonnes ; table Personne(id, nom, post-nom, prénom, sexe, âge, téléphone, mail, id-pére, id-mère), table Pére(id, nom, post-nom, prénom, âge, téléphone, mail) et table Mère(id, nom, post-nom, prénom, âge, téléphone, mail).
La jointure est basée sur la notion de clé étrangère, une clé étrangère est une clé(colonne) normale dans une table mais qui est clé primaire dans une autre table.
Dans notre cas les clés id-pére et id-mère sont des clés étrangères dans la table Personne car elles sont respectivement clés primaires dans les tables Pére et Mère.
Dans le cadre de cet article, nous allons utiliser le SGBD Postgresql.
**Contenu de la table Personne**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mfgnfkqdtd42dgep7nsf.png)

**Contenu de la table Pere**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sf127pek8t3eof7jpt9z.png)

**Contenu de la table Mere**
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/30d5gpile0ige4j6633g.png)



**SYNTAXE:**

Dans la syntaxe de jointures, 2 mots clés sont très importants:
**JOIN**: Prends à sa gauche et à sa droite les 2 tables qu'on veut joindre.
**ON**: Prend à sa droite les clés de liaison de 2 tables mentionnées de part et d'autre de JOIN.
`Table1 JOIN Table2 ON clé-de-liaison(dans Table1) = clé-de-liaison(dans Table2)` 
Donc, si nous voulons afficher les informations du père de Gloire, nous devons exécuter le script suivant:
`SELECT Pere.* FROM Pere JOIN Personne ON Pere.id=Personne.id-pere WHERE Personne.prenon='Gloire'`
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2urwxq2al60cxn4vcpzy.png)
Il est nécessaire de signaler le nom de la table avant chaque colonne pour éviter le conflit d’ambiguïté.



**TYPES:**

Les différents types de jointures sont :

**- Inner join**: Jointure interne qui retourne les enregistrements lorsque la condition est vérifiée dans les 2 tables.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4bp3at0zqu5xyqrnejzs.png) 

**- Cross join**: Jointure qui permet de joindre chaque ligne d’une table avec chaque ligne de l’autre table.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lh1j48ioaved7s88rrnk.png)

**- Left join**:Jointure permettant de retourner toutes les entrées de la table de gauche.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8s2vl9zv49qo5frd854.png)

**- Right join**:Jointure permettant de retourner toutes les entrées de la table de droite.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ulidmgw4pait579kca3.png)

**- Full join**:Jointure retournant les résultats lorsque la condition est vérifiée dans au moins l’une de tables.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9cc73yj78z3hi7jxkcl4.png)

**- Self join**: Jointure d'une table avec elle même.

```
SELECT `t1`.`nom_colonne1`, `t1`.`nom_colonne2`, `t2`.`nom_colonne1`,
`t2`.`nom_colonne2`
FROM `table` as `t1`
LEFT OUTER JOIN `table` as `t2` ON `t2`.`fk_id` = `t1`.`id`

```

**- Natural join**: Jointure naturelle entre 2 tables s'il y a au moins une colonne qui porte le même nom entre les 2 tables.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rld815a6tq0trz2v1mhu.png)

**- Union join**: Jointure union


**RENOMMAGE:** 
En SQL,le renommage(alias) c'est l'utilisation de lettres ou consonnes simples à la place de noms des tables pour éviter des longues lignes des scripts généralement lorsqu'on fait des jointures complexes.
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/iip3vnvb5llcds0ywc0t.png)  


**CONCLUSION:**
Enfin, connaissant tous la complexité de manipulation des données de nos jours,et la jointure étant l'une de techniques qui simplifient cette manipulation, je nous invite à se servir du présent article pour se mettre en contact avec cette technique et avoir la facilité de nous y approfondir.