Bonjour,
J'aimerais avoir vos avis sur la méthode que j'utilise pour comparer deux tables ayant une même structure d'une base de données ou de deux bases de données différentes, qui peuvent appartenir à différents SGBD. Par comparer, je veux dire : détecter les enregistrements qui existent dans les deux tables et ceux qui n'existent que dans une des deux tables.
J'ai posté un message dans le forum Langage SQL (ici), mais il n'y a pas récolté beaucoup de réponses, probablement parce que cela n'a pas un grand rapport avec le langage SQL.
La méthode est de sélectionner tous les enregistrements des deux tables, dans un même ordre, et de parcourir les enregistrements comme ceci :
Cette méthode est utile car il n'y a que deux requêtes pour récupérer tous les enregistrements, et qu'une seule lecture (qu'un seul parcours) des enregistrements sélectionnés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 - Sélection du premier enregistrement des deux tables - Comparaison de la rubrique sur laquelle on a trié les enregistrements - Si la valeur de la rubrique en question est identique pour les deux enregistrements - Les deux enregistrements se trouvent dans les deux tables... - Sélection des enregistrements suivant - Sinon, si la valeur de la rubrique est plus grande dans la table A - Il y a un enregistrement dans la table B qui ne se trouve pas dans la table A - Sélection de l'enregistrement suivant de la table B - Sinon, si la valeur de la rubrique est plus petite dans la table A - L'enregistrement de la table A ne se trouve pas dans la table B - Sélection de l'enregistrement suivant de la table A.
Cependant devoir récupérer les enregistrements dans un même ordre pour deux tables peut être embêtant.
A part cette façon, je n'ai pensé qu'à un autre moyen, plus lourd :
Cette méthode implique qu'il faille faire beaucoup de requêtes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 - Sélection du premier enregistrement d'une des deux tables (A) - Recherche d'un enregistrement équivalent dans l'autre table (B) (avec une requête SQL) - Si on trouve l'enregistrement - Les deux enregistrements se trouvent dans les deux tables... - Sélection de l'enregistrement suivant de la table A - Si on ne le trouve pas - L'enregistrement de la table A ne se trouve pas dans la table B - Sélection de l'enregistrement suivant de la table A - Même chose pour tous les enregistrements - Arrivé à la fin de la table A, il faudrait faire une opération similaire dans l'autre sens (on prend un enregistrement de la table B et on recherche son équivalent dans la table A), pour récupérer les enregistrements qui ne se trouvent pas dans la table A mais bien dans la table B.
La méthode que j'utilise doit être la plus courrante à mon avis, mais en fait, je n'en sais rien du tout.
Merci de vous intéresser à mon cas, pour me dire ce que vous savez ou pensez de la méthode que j'utilise.
Salut.
Partager