Bases des bases de données
Une table Employe(NumEmploye, Nom, IdService) contient 4 lignes dont les valeurs IdService sont, dans l'ordre, 10, 20, 10 et NULL. Une table Service(IdService, NomService) contient 3 lignes dont IdService vaut 10, 20 et 30. Combien de lignes renvoie SELECT Employe.Nom, Service.NomService FROM Employe INNER JOIN Service ON Employe.IdService = Service.IdService ?
- A3 lignes
- B4 lignes
- C12 lignes
Afficher la réponse et l'explication
Réponse : A. 3 lignes
Une jointure interne (INNER JOIN) ne renvoie que les combinaisons de lignes qui satisfont la condition ON. Les 2 employés dont IdService vaut 10 se combinent avec le service 10, et l'employé dont IdService vaut 20 avec le service 20 ; le résultat compte donc 3 lignes. L'employé dont IdService est NULL n'est joint à aucun service, car une comparaison avec NULL n'est jamais vraie, et il disparaît du résultat. Le service 30, qui n'a aucun employé, n'apparaît pas non plus. 4 lignes correspond à une jointure externe gauche qui garde toutes les lignes de la table Employe (Employe LEFT OUTER JOIN Service). 12 lignes correspond au CROSS JOIN (produit cartésien), qui forme toutes les combinaisons sans condition : 4 × 3 = 12 lignes.
Continuer : 9 autres questions sur Bases des bases de données