SQL : Identifier les enregistrements "sans lien"

 🔍 SQL : Obtenir la liste des élèves sans responsable (avec LEFT JOIN)



📘 Introduction : Identifier les enregistrements "sans lien"

Dans toute base de données relationnelle, il est courant de vouloir repérer les enregistrements orphelins, c’est-à-dire ceux qui n'ont pas de correspondance dans une autre table liée.

Ce besoin peut concerner différentes situations :

  • 📌 Liste des clients sans commande

  • 📌 Liste des employés sans mission assignée

  • 📌 Liste des produits sans stock

  • 📌 Et dans notre exemple : des élèves sans responsable enregistré

🎯 Objectif

Dans cet article, nous allons nous concentrer sur le cas concret suivant : obtenir la liste des élèves inscrits pour l’année scolaire 2024/2025, mais pour lesquels aucun responsable n’a été associé dans la base.

Cela permet à l’administration de :

  • détecter les fiches incomplètes

  • assurer un suivi plus rigoureux des élèves

  • relancer les familles si besoin

👉 Pour cela, nous allons utiliser une jointure gauche (LEFT JOIN) combinée à une condition sur les valeurs nulles (IS NULL). C’est une technique SQL simple et très efficace.


📄 Requête SQL complète

sql

SELECT ScolInscription.Matricule, ScolInscription.AnneeScolaire, ScolInscription.NumInscription FROM ScolInscription LEFT JOIN ResponsableEleve ON ScolInscription.Matricule = ResponsableEleve.Matricule WHERE ScolInscription.AnneeScolaire = '2024/2025' AND ResponsableEleve.Matricule IS NULL;

🧩 Explication détaillée

📌 1. Tables concernées

  • ScolInscription : contient les informations d'inscription des élèves, incluant leur Matricule, AnneeScolaire, et NumInscription.

  • ResponsableEleve : contient les associations entre un élève (Matricule) et son ou ses responsables.


📌 2. Le LEFT JOIN

sql

LEFT JOIN ResponsableEleve ON ScolInscription.Matricule = ResponsableEleve.Matricule

👉 Cette jointure retourne tous les enregistrements de la table de gauche (ScolInscription), même si aucun enregistrement correspondant n'existe dans la table de droite (ResponsableEleve).

⚠️ Les colonnes issues de ResponsableEleve seront nulles quand aucun responsable n’est trouvé.


📌 3. La clause WHERE

sql

WHERE ScolInscription.AnneeScolaire = '2024/2025' AND ResponsableEleve.Matricule IS NULL;

✅ On filtre :

  • uniquement les élèves inscrits pour l’année 2024/2025

  • et ceux qui n’ont pas de responsable, c’est-à-dire que la jointure ResponsableEleve.Matricule est NULL.


✅ Résultat final

Tu obtiens ainsi la liste des élèves inscrits en 2024/2025 qui n'ont aucun responsable associé dans la base.


🧠 Astuce complémentaire

Si la relation entre élèves et responsables se fait via une autre clé (ex. NumInscription au lieu de Matricule), il faudra adapter la clause ON.

Exemple :

sql

ON ScolInscription.NumInscription = ResponsableEleve.NumInscription

📌 Conclusion

Cette requête SQL repose sur une logique très utilisée en base de données relationnelle : repérer les "orphelins" d’une relation (ici, les élèves sans responsables).

C’est une technique puissante pour vérifier l’intégrité des données, détecter les anomalies, ou encore générer des relances administratives.

Commentaires

Posts les plus consultés de ce blog

🛠 Utilisation de CustomUIEditor pour Personnaliser le Ruban Excel

🗓️ Simulateur de Congés et Calendrier Collaboratif sous Google Sheets

Explication VBA : Facturation automatique Gestion client