Qu'est-ce qu'une jointure ?



Nous avons donc maintenant deux tables :

  • jeux_video ;
  • proprietaires.

   

Les informations sont séparées dans des tables différentes et c'est bien. Cela évite de dupliquer des informations sur le disque.

Cependant, lorsqu'on récupère la liste des jeux, si on souhaite obtenir le nom du propriétaire, il va falloir adapter la requête pour récupérer aussi les informations issues de la table proprietaires. Pour cela, on doit faire ce qu'on appelle une jointure.


Il existe plusieurs types de jointures, qui nous permettent de choisir exactement les données que l'on veut récupérer. Je vous propose d'en découvrir deux, les plus importantes :

  • les jointures internes : elles ne sélectionnent que les données qui ont une correspondance entre les deux tables ;
  • les jointures externes : elles sélectionnent toutes les données, même si certaines n'ont pas de correspondance dans l'autre table.


Il est important de bien comprendre la différence entre une jointure interne et une jointure externe.

Pour cela, imaginons que nous ayons une 4e personne dans la table des propriétaires, un certain Romain Vipelli, qui ne possède aucun jeu (tableau suivante).


ID

prenom

nom

tel

1

Florent

Dugommier

01 44 77 21 33

2

Patrick

Lejeune

03 22 17 41 22

3

Michel

Doussand

04 11 78 02 00

4

Romain

Vipelli

01 21 98 51 01


Romain Vipelli est référencé dans la table proprietaires mais il n'apparaît nulle part dans la table jeux_video car il ne possède aucun jeu.

Si vous récupérez les données des deux tables à l'aide :

  • d'une jointure interne : Romain Vipelli n'apparaîtra pas dans les résultats de la requête. La jointure interne force les données d'une table à avoir une correspondance dans l'autre ;
  • d'une jointure externe : vous aurez toutes les données de la table des propriétaires, même s'il n'y a pas de correspondance dans l'autre table des jeux vidéo ; donc Romain Vipelli, qui pourtant ne possède aucun jeu vidéo, apparaîtra.


La jointure externe est donc plus complète car elle est capable de récupérer plus d'informations, tandis que la jointure interne est plus stricte car elle ne récupère que les données qui ont une équivalence dans l'autre table.

Voici par exemple les données que l'on récupèrerait avec une jointure interne (tableau suivante) :


nom_jeu

prenom

Super Mario Bros

Florent

Sonic

Patrick


On obtient les jeux et leurs propriétaires, mais Romain qui ne possède pas de jeu n'apparaît pas du tout. En revanche, avec une jointure externe (tableau suivante) :


nom_jeu

prenom

Super Mario Bros

Florent

Sonic

Patrick

NULL

Romain


Romain apparaît maintenant. Comme il ne possède pas de jeu, il n'y a aucun nom de jeu indiqué (NULL).

Nous allons maintenant voir comment réaliser ces deux types de jointures en pratique.

Créé avec HelpNDoc Personal Edition: Découvrez la puissance d'un site Web réactif pour votre documentation