Aller au contenu

Les jointures

Une jointure permet de combiner plusieurs tables d’une même base.
Cette jointure va associer les lignes qui correspondent pour un (ou plusieurs) attributs communs (généralement les associations clef primaire/clef étrangère) :

1
2
3
SELECT ...
FROM nom_table1 AS T1 JOIN nom_table2 AS T2
ON T1.colonne1 = T2.colonne2

Pour lever les ambiguïtés, le nom de la table peut (doit) précéder le nom de l’attribut de jointure. On peut simplifier l’écriture de cette requête en donnant un alias au nom de la table grâce au mot-clef AS.

Exemple

On considère les tables Confitures et Ventes :

Confitures

Écrire une requête qui renvoie le nom des confitures vendues.

Une réponse
1
2
3
SELECT fruit
FROM Confitures AS C JOIN Ventes AS V
ON C.ref = V.ref_conf;
Résultat de la requête

Confitures

Remarque

Il est possible d’enchaîner les jointures :

1
2
3
SELECT ...
FROM T1 JOIN T2 JOIN T3
ON T1.col1 = T2.col2 AND T3.col3 = T2.col4

Réutiliser le résultat d’une requête

Il existe plusieurs méthodes pour réutiliser le résultat d’une requête.
Parmi elles, on peut citer :

  1. La création d’une nouvelle table dans la base (risque d’accumulation de tables dans la base de données) :

    1
    2
    3
    4
    CREATE TABLE new_table AS
    SELECT …………
    FROM …………
    WHERE ………… ;
    
  2. Si la réutilisation est immédiate et qu’il n’y a pas besoin de garder en mémoire le résultat intermédiaire, alors on peut utiliser la commande WITH :

    1
    2
    3
    4
    5
    6
    7
    WITH temp AS (
        SELECT …………
        FROM …………
        WHERE …………)
    
    SELECT …………
    FROM temp;