Les jointures internes

Réunir les lignes de deux ou trois tables avec INNER JOIN … ON, nommer les tables par des alias, joindre une table avec elle-même et reconnaître le produit cartésien d'une condition oubliée.

  • 20 cartes
  • 5 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Les chiffres
  5. Mises en situation

Quelques cartes du deck

  • Jointure interne : de quoi s'agit-il ?

    Voir la réponse

    Opération qui apparie les lignes de deux tables selon une condition et ne garde que les lignes qui ont un partenaire.

    Un client sans commande disparaît du résultat d'une jointure interne client-commande : il n'a personne à qui s'apparier.

  • Pourquoi PostgreSQL rejette-t-il cette requête ?

    ```sql
    SELECT id, nom
    FROM commande
    JOIN client ON commande.id_client = client.id;
    `

    • id existe dans les deux tables : il faut écrire commande.id ou client.id
    • Une jointure interne ne se mélange pas avec SELECT sur deux colonnes
    • Il manque DISTINCT devant id pour éviter les doublons
    • ON doit venir avant JOIN dans la clause FROM
    Voir la réponse

    id existe dans les deux tables : il faut écrire commande.id ou client.id

    Le message est column reference "id" is ambiguous. Un nom de colonne présent dans plusieurs tables doit être préfixé par la table ou par son alias.

  • Dans la clause FROM, la condition de jointure s'écrit après le mot …, et JOIN écrit seul équivaut à ….

    Voir la réponse

    Dans la clause FROM, la condition de jointure s'écrit après le mot ON, et JOIN écrit seul équivaut à INNER JOIN.

    FROM commande JOIN client ON commande.id_client = client.id est une jointure interne. La condition peut aussi s'écrire dans WHERE avec une virgule entre les tables, mais ON dit clairement ce qui relie quoi.

  • Condition de jointure : de quoi s'agit-il ?

    Voir la réponse

    Prédicat de la clause ON qui dit quelles lignes de gauche vont avec quelles lignes de droite, le plus souvent une clé étrangère égale à une clé primaire.

    ON commande.id_client = client.id relie chaque commande à son client. Sans elle, toutes les combinaisons sont rendues.