Dans cette section, vous trouverez des ressources sur les cours que j'enseigne à savoir de la documentation, du code, des vidéos etc. Dès que je trouve quelque chose d'intéressant à partager, je le mettrai à disposition ici pour mes étudiants.
Travaux dirigés 8
##Auteur : Enseignant ##École : Collège Marie Victorin ##Session : Hiver 2026 ##Titre du cours : Introduction aux bases de données ##Titre du programme : Travaux dirigés 8 ##Version : 1.0 ##Date : 00/00/2026 ##Langage et version : SQL ##Moteur : SQL Server Express
-- Les requêtes sélection dans le langage SQL -- Objectif : -- Ce travail dirigé portera sur la création de requêtes sélection multitables avec des jointures -- ============================================================================================== -- *************************************************************************** -- Vérifications à faire systématiquement AVANT d'écrire les requêtes -- Vérifier la structure de la table à utiliser, c'est à dire : -- Le nom de la table -- Le nom des colonnes -- Le type des colonnes -- Les données contenues dans la table -- Base de données à utiliser : BDRH -- *************************************************************************** -- --------- -- Requête 1 -- Écrire une requête qui affiche les données personnelles des employés ainsi que les personnes à charge -- Démarche -- Quelle est la table maitre ? La clé primaire ? -- Quelle est la table secondaire ? La clé étrangère -- On affichera : -- Le nom de l'employé -- Le prénom de l'employé -- le courriel -- Le téléphone -- le nom et le prénom de la personne à charge (Nom, Prenom) -- le lien de parenté -- Votre code ici -- Cette requete est incorrecte car elle fait un produit cartésien -- Il n'y a pas de jointure -- version I SELECT A.[nom], A.[prenom], A.[courriel], A.[telephone], CONCAT(B.nom, ', ', B.prenom) NomComplet, B.lien_parente FROM [tbl_employes] A, [dbo].[tbl_personnes_a_charge] B ORDER BY A.nom -- --------- -- Version II -- Cette requete est correcte avec la jointure SELECT A.[nom], A.[prenom], A.[courriel], A.[telephone], CONCAT(B.nom, ', ', B.prenom) NomComplet, B.lien_parente FROM [tbl_employes] A, [dbo].[tbl_personnes_a_charge] B WHERE A.id_employe = B.id_employe -- jointure (équi-jointure) ORDER BY A.nom -- ----------- -- Version III -- Cette requete est correcte avec la jointure SELECT A.[nom], A.[prenom], A.[courriel], A.[telephone], CONCAT(B.nom, ', ', B.prenom) NomComplet, B.lien_parente FROM [tbl_employes] A INNER JOIN [dbo].[tbl_personnes_a_charge] B ON A.id_employe = B.id_employe -- jointure (équi jointure) ORDER BY A.nom
-- --------- -- Requête 2 -- Écrire une requête qui affiche les pays ainsi que les régions ou ils sont situés. -- Démarche -- Quelle est la table maitre ? La clé primaire ? -- Quelle est ;a table secondaire ? La clé étrangère -- On affichera : -- La région -- Le pays -- La liste sera triée par région et par pays -- Votre code ici SELECT A.nom_region, B.nom_pays FROM [tbl_regions] A, [tbl_pays] B WHERE A.id_region = B.id_region ORDER BY 1, 2
-- --------- -- Requête 3 -- Modifier la requête précédente pour afficher le nombre de pays dans chaque région -- On affichera : -- La région -- Le nombre de pays -- -- Votre code ici SELECT A.nom_region, COUNT(B.nom_pays) FROM [tbl_regions] A, [tbl_pays] B WHERE A.id_region = B.id_region GROUP BY A.nom_region ORDER BY 1, 2
-- --------- -- Requête 4 -- Modifier la requête précédente pour afficher les régions ayant plus de 5 pays -- On affichera : -- La région -- Le nombre de pays -- -- Votre code ici SELECT A.nom_region, COUNT(B.nom_pays) NbPays FROM [tbl_regions] A, [tbl_pays] B WHERE A.id_region = B.id_region GROUP BY A.nom_region HAVING COUNT(B.nom_pays) > 5 ORDER BY 1, 2
-- ---------- -- Requête 5 -- Écrire une requête qui affiche les informations professionnelles des employés. -- Démarche -- Quelle est la table maitre ? La clé primaire ? -- Quelle est ;a table secondaire ? La clé étrangère -- On affichera : -- le nom complet de l'employé (Nom, Prenom) -- Le courriel -- Le téléphone -- Le poste accupé -- La liste sera triée par intitulé de poste. -- Votre code ici SELECT CONCAT(A.nom, ' ', A.prenom) NomComplet, A.[courriel], A.[telephone], B.intitule_poste FROM [tbl_employes] A, [dbo].[tbl_postes] B WHERE A.id_poste = B.id_poste ORDER BY B.intitule_poste;
-- ---------- -- Requête 6 -- Modifier la requête précédente pour affichier le nombre d'employés dans chaque poste. -- Afficher les postes ayant le plus d'employés en premier -- On affichera : -- le nom du poste -- le nombre total d’employés qui occupent ce poste -- Votre code ici SELECT B.intitule_poste Poste, COUNT(A.id_employe) NbEmployes FROM [tbl_employes] A, [dbo].[tbl_postes] B WHERE A.id_poste = B.id_poste GROUP BY B.intitule_poste ORDER BY COUNT(A.id_employe) DESC;
-- ---------- -- Requête 7 -- Modifier la requête précédente pour affichier les postes ayant plus de 2 employés -- Afficher les postes ayant le plus d'employés en premier -- On affichera : -- le nom du poste -- le nombre total d’employés qui occupent ce poste -- Votre code ici SELECT B.intitule_poste Poste, COUNT(A.id_employe) NbEmploye FROM [tbl_employes] A, [dbo].[tbl_postes] B WHERE A.id_poste = B.id_poste GROUP BY B.intitule_poste HAVING COUNT(A.id_employe) > 2 ORDER BY COUNT(A.id_employe) DESC;
-- ---------- -- Requête 8 -- Écrire une requête qui affiche l'emplacement ou travaillent les employés. -- -- On affichera : -- le nom complet de l'employé (table employe) * -- La date d'embauche (table employe) * -- Salaire (table employe) * -- Le téléphone (table employe) * -- Le département (table departement) * -- L'adresse du lieu de travail (table employe) * -- la ville (table site) * -- La province (table site) * -- Le pays (table site) * -- La région (table region) -- -- Votre code ici SELECT CONCAT(emp.nom, ', ', emp.prenom) NomComplet, emp.date_embauche, emp.salaire, emp.telephone, dept.nom_departement, sites.adresse_rue, sites.province, sites.ville, pays.nom_pays, regi.nom_region FROM [dbo].[tbl_employes] emp, [dbo].[tbl_departements] dept, [dbo].[tbl_sites] sites, [dbo].[tbl_pays] pays, [dbo].[tbl_regions] regi WHERE emp.id_departement = dept.id_departement AND dept.id_site = sites.id_site AND sites.id_pays =pays.id_pays AND pays.id_region = regi.id_region
W3schools
Python.org