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.
- Notions
- Questions
- Ranger et relier
- 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 commanderend 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 NULLFROM client JOIN commande ON commande.id_client = client.id WHERE commande.id IS NULLFROM client LEFT JOIN commande ON commande.id_client = client.id WHERE client.id IS NULLFROM 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 NULLLa 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
= NULLn'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 brend les mêmes lignes queb LEFT JOIN a. On préfère souvent le LEFT et on met la table à conserver à gauche.