Bases des bases de données
Une table Employe(NumEmploye, Nom, IdService) contient 5 lignes dont les valeurs IdService sont, dans l'ordre, 10, 20, 10, NULL et NULL. Une table Service(IdService, NomService) contient 3 lignes dont IdService vaut 10, 20 et 30. Combien de lignes renvoie SELECT Service.NomService, Employe.Nom FROM Service LEFT OUTER JOIN Employe ON Service.IdService = Employe.IdService ?
- A3 lignes
- B4 lignes
- C5 lignes
Afficher la réponse et l'explication
Réponse : B. 4 lignes
Une jointure externe gauche (LEFT OUTER JOIN) garde toutes les lignes de la table de gauche (ici la table Service) ; lorsque la table de droite n'a pas de ligne correspondante, elle produit une ligne dont les colonnes de la table de droite sont remplies de NULL. Le service 10 a 2 employés, ce qui donne 2 lignes ; le service 20 donne 1 ligne ; et le service 30, qui n'a aucun employé, donne 1 ligne avec un nom NULL, soit 4 lignes au total. Les 2 employés dont IdService est NULL ne correspondent à aucun service et, étant des lignes de la table de droite, qui n'est pas celle conservée intégralement, n'apparaissent pas dans le résultat. Une jointure interne éliminerait aussi la ligne du service 30, ce qui donnerait 3 lignes. Inverser les tables en Employe LEFT OUTER JOIN Service garde les 5 employés, ce qui donne 5 lignes. Avec les jointures externes, il est important de vérifier quelle table conserve toutes ses lignes.
Continuer : 9 autres questions sur Bases des bases de données