Les jointures externes

LEFT, RIGHT et FULL OUTER JOIN : garder les lignes sans partenaire en les complétant par NULL, chercher « ceux qui n'ont pas » avec IS NULL, et éviter le piège de la condition mise dans WHERE.

  • 18 cartes
  • 4 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

Quelques cartes du deck

  • LEFT JOIN : de quoi s'agit-il ?

    Voir la réponse

    Jointure qui garde toutes les lignes de la table de gauche, avec des NULL à droite quand aucune ligne ne correspond.

    client LEFT JOIN commande rend tous les clients : ceux sans commande ont NULL dans toutes les colonnes de commande.

  • Quelle requête rend les clients qui n'ont passé aucune commande ?

    • FROM client LEFT JOIN commande ON commande.id_client = client.id WHERE commande.id IS NULL
    • FROM client JOIN commande ON commande.id_client = client.id WHERE commande.id IS NULL
    • FROM client LEFT JOIN commande ON commande.id_client = client.id WHERE client.id IS NULL
    • FROM client LEFT JOIN commande ON commande.id_client = client.id WHERE commande.id = NULL
    Voir la réponse

    FROM client LEFT JOIN commande ON commande.id_client = client.id WHERE commande.id IS NULL

    La jointure interne ne garde que les clients appariés, donc ne trouve jamais de NULL. Tester client.id ne sert à rien : la clé du client n'est jamais NULL. Et = NULL n'est jamais vrai.

  • Dans client LEFT JOIN commande, les clients sans commande sont gardés, avec des … dans les colonnes de ….

    Voir la réponse

    Dans client LEFT JOIN commande, les clients sans commande sont gardés, avec des NULL dans les colonnes de commande.

    La table de gauche est préservée entièrement ; c'est la droite qui est complétée.

  • RIGHT JOIN : de quoi s'agit-il ?

    Voir la réponse

    Jointure qui garde toutes les lignes de la table de droite ; c'est la symétrique de celle qui garde la gauche.

    a RIGHT JOIN b rend les mêmes lignes que b LEFT JOIN a. On préfère souvent le LEFT et on met la table à conserver à gauche.