Article mis à jour le : 05-05-2022
Petite introduction aux jointures avec MySQLLes requêtes simples, c'est bien beau. Mais une accumulation de requêtes simples, ça l'est moins! Si vous devez lire des données dans une table mais que ces données nécessitent auparavant ou après la lecture dans une autre, il peut être plus intéressant de faire une seule requête et ainsi simplifier votre code. J'ajouterai quelques exemples au fur et à mesure.
Soit deux tables, l'une contenant les joueurs, avec chacun un ID et un NOM
et une autre contenant une liste de matchs, avec pour chacun un ID, et l'ID des deux joueurs qui se sont affrontés :
A présent, admettons que vous soyez intéressé par le match N°1. C'est bien beau, mais vous ne connaissez pas le nom du joueur 1 par exemple.
Sans jointure, vous devriez faire deux requêtes :
SELECT IDP1 FROM matches WHERE ID = 1
pour obtenir l'ID du joueur1, et ensuite
SELECT NOM FROM joueurs WHERE ID = (L'ID DE VOTRE JOUEUR)
Maintenant, vous pouvez faire cela en une seule requête :
SELECT NOM, IDP1
FROM joueur, matchs
WHERE matchs.IDP1 = joueur.ID
AND matchs.ID =1
Et résultat :
Pour information, il s'agit d'une jointure interne, voir explications plus bas dans cet article. Vous remarquerez que l'utilisation du mot-cléf JOIN n'est pas obligatoire pour les jointures internes.
Ici nous allons utiliser des alias, pour la présentation des données. Nous avons deux tables :
Vous avez compris, le lien entre les deux tables est l'ID. Voici donc une requête : nous connaissons liste_id (9), et nous voulons tous les ID et les emails des personnes qui font partie de cette liste :
La suite de l'exemple précédent, sauf que je veux supprimer un enregistrement des deux tables, le champ commun étant donc abo_id :
Il existe plusieurs types de jointure, combinables :