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 ?

  1. A3 lignes
  2. B4 lignes
  3. 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.

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases des bases de données

  1. 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 ?
  2. La colonne x de la table R contient 4 lignes de valeurs 1, 1, 2, 3, et la colonne x de la table S contient 4 lignes de valeurs 1, 1, 2, 4. Combien de lignes renvoie SELECT * FROM R INNER JOIN S ON R.x = S.x ?
  3. Une table Client(IdClient, Nom) contient 4 lignes : (C1, Aoki), (C2, Inoue), (C3, Ueda), (C4, Eto). Une table Commande(IdCommande, IdClient, Montant) contient 5 lignes : (O1, C1, 3000), (O2, C2, 8000), (O3, C1, 6000), (O4, C3, 2000), (O5, C2, 9000). Combien de lignes renvoie SELECT Nom FROM Client WHERE IdClient IN (SELECT IdClient FROM Commande WHERE Montant > 5000) ?
  4. À partir d'une table Client(IdClient, Nom) et d'une table Commande(IdCommande, IdClient, Montant), on veut obtenir le nom des clients qui n'ont jamais passé de commande. Quelle instruction SQL est correcte ?
  5. Quelle proposition décrit correctement une vue (view) dans une base de données relationnelle ?