Faq/Base/141/fr

Comment trouver les enregistrements figurant dans une table et absents d'une autre table ?
On a deux tables de structures identiques, ou disposant de champs communs. On souhaite obtenir la liste des enregistrements figurant dans une table mais absents de l'autre.

Le principe sera de relier les tables sur les champs communs via une jointure externe gauche. Ceci signifie qu'on désire tous les enregistrements de la table mentionnée à gauche de l'opérateur de jointure et uniquement les lignes qui correspondent à des lignes de la table de gauche pour la table figurant à droite de l'opérateur. Avec une jointure de ce type lorsqu'il n'y a pas de correspondance dans la table de droite, des valeurs vides (NULL) les remplacent. Nous ajouterons donc un critère de sélection pour ne garder que ces enregistrements.

Les données sont les suivantes :

Nous voulons connaître les enregistrements de Table1 (en haut sur la copie d'écran) absents de Table2. La comparaison ne peut se faire ici sur les identifiants. Nous comparerons les champs Libellé et Montant dans une requête du type :

Ci-dessous le SQL :

Une "astuce" consiste à passer d'abord par la création d'une requête en mode ébauche pour sélectionner les tables et champs puis de passer en mode SQL pour compléter ce dernier. Cette technique permet d'éviter de taper les noms de champs et tables avec toutes les erreurs que cela suppose...


 * [[Media:FR.FAQ Base 141 TrouverAbsents.odb|Télécharger une base exemple]]


 * Voir aussi Comment mettre à jour une table à partir d'une autre ?
 * Voir aussi Comment ajouter des données à une table à partir d'une autre table (requête) ?