Les jointures en MySQL permettent de combiner des données provenant de plusieurs tables en une seule requête. Il existe plusieurs types de jointures, chacun ayant un comportement différent en termes de gestion des données qui ne correspondent pas dans les tables jointes.

Les types de jointures les plus couramment utilisés en MySQL sont les suivants:

    1. INNER JOIN: Cette jointure renvoie uniquement les lignes qui ont des valeurs correspondantes dans les deux tables. C’est le type de jointure le plus couramment utilisé.

    2. LEFT JOIN: Cette jointure renvoie toutes les lignes de la table de gauche, ainsi que les lignes correspondantes de la table de droite. Si aucune ligne ne correspond dans la table de droite, les valeurs des colonnes de cette table seront NULL.

    3. RIGHT JOIN: Cette jointure renvoie toutes les lignes de la table de droite, ainsi que les lignes correspondantes de la table de gauche. Si aucune ligne ne correspond dans la table de gauche, les valeurs des colonnes de cette table seront NULL.

    4. FULL OUTER JOIN: Cette jointure renvoie toutes les lignes des deux tables, avec les lignes correspondantes dans les deux tables. Si aucune ligne ne correspond dans l’une ou l’autre des tables, les valeurs des colonnes de cette table seront NULL.

    5. CROSS JOIN: Cette jointure renvoie le produit cartésien des deux tables, c’est-à-dire toutes les combinaisons possibles entre les lignes des deux tables.

Voici un exemple d’utilisation d’une jointure INNER JOIN pour combiner des données provenant des tables “Auteurs” et “Livres” :

SELECT Auteurs.nom, Livres.titre
FROM Auteurs
INNER JOIN Livres
ON Auteurs.id = Livres.auteur_id;
Entity-Relationship Diagram

Dans cet exemple, la requête renverra le nom des auteurs et le titre des livres qu’ils ont écrits. Seuls les auteurs ayant écrit au moins un livre apparaîtront dans les résultats.

 

Que va faire cette requête avec la base aliments?
SELECT aliments.nom, aliments.id, legumes.nom, legumes.id
FROM aliments
INNER JOIN legumes
ON aliments.id = legumes.id;

 

 

    • Cette requête renvoie les recettes et leurs aliments associés, mais seulement si une association existe dans la table est_composé_de.NNER JOIN :
     
    SELECT r.name_recette, a.nom_aliment 
    FROM recette r 
    INNER JOIN est_composé_de e 
    ON r.id_recette = e.id_recette 
    INNER JOIN aliment a 
    ON e.id_aliment = a.id_aliment;
    • Cette requête renvoie toutes les recettes, même celles qui n'ont pas d'aliments associés. Si une recette n'a pas d'aliments associés, les colonnes correspondantes à l'aliment seront NULL.

      LEFT JOIN 

      SELECT r.name_recette, a.nom_aliment 
      FROM recette r 
      LEFT JOIN est_composé_de e 
      ON r.id_recette = e.id_recette 
      LEFT JOIN aliment a 
      ON e.id_aliment = a.id_aliment;
      • Cette requête renvoie tous les aliments, même ceux qui ne sont associés à aucune recette. Si un aliment n'est associé à aucune recette, les colonnes correspondantes à la recette seront NULL. (Notez que RIGHT JOIN est moins couramment utilisé que LEFT JOIN, et vous pourriez obtenir le même résultat en inversant les tables et en utilisant un LEFT JOIN).

        RIGHT JOIN :

        SELECT r.name_recette, a.nom_aliment 
        FROM recette r 
        RIGHT JOIN est_composé_de e 
        ON r.id_recette = e.id_recette 
        RIGHT JOIN aliment a 
        ON e.id_aliment = a.id_aliment;

Ces requêtes vous permettent de voir comment les différentes jointures fonctionnent et comment elles peuvent être utilisées pour récupérer des données de tables liées.

Quand utiliser les jointures ?

Les jointures sont un outil puissant pour combiner des données provenant de plusieurs tables en une seule requête. Elles sont particulièrement utiles lorsque les données sont stockées dans des tables séparées mais liées, et que l’on souhaite récupérer des informations à partir de ces différentes tables en une seule requête

 

Modifié le: vendredi 8 décembre 2023, 04:36