SELECT * WHERE NOT EXISTS : Recherche des enregistrements manquants
La requête SQL "SELECT * des employés WHERE NOT EXISTS (SELECT nom FROM eotm_dyn) " vise à récupérer toutes les lignes de la table "employés" où leurs noms ne sont pas présents dans la table "eotm_dyn". Cependant, cette requête est incomplète et ne retournera aucun résultat.
Pour compléter la requête, il est nécessaire de joindre les deux tables sur un champ commun, typiquement un champ d'identifiant unique. En supposant que les tables sont jointes sur le champ "employeeID", la requête corrigée devient :
SELECT * FROM employees e WHERE NOT EXISTS ( SELECT null FROM eotm_dyn d WHERE d.employeeID = e.id )
La sous-requête "NOT EXISTS" vérifie l'absence de lignes dans la table "eotm_dyn" où le "employeeID" correspond à "l'identifiant" de la ligne actuelle dans la table "employés". Si aucune ligne de ce type n’existe, la requête externe renverra la ligne entière de la table « employés ». Cette approche garantit que seuls les employés sans entrées dans la table "eotm_dyn" sont sélectionnés.
Alternativement, la requête peut être écrite en utilisant un LEFT JOIN avec un filtre ultérieur pour les valeurs NULL :
SELECT * FROM employees e LEFT JOIN eotm_dyn d ON e.id = d.employeeID WHERE d.name IS NULL
Cependant, cette méthode peut être moins efficace que l'utilisation de la sous-requête NOT EXISTS, en particulier pour les grandes bases de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!