Différence entre 2 tables dans 2 bdd

Fermé
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 19 févr. 2008 à 10:57
 safaa - 5 mars 2012 à 19:59
Bonjour,

Nous avons actuellement 2 bdd sur notre serveur SQL. La base 1 est utilisé pour un logiciel de comm appelé Goldmine. La base 2 est utilisé pour notre site intranet qui nous permet de rentrer les entrées de notre dépôt.
Chaque semaine, j'utilise une extraction de la base 1 depuis Goldmine (pour les nouveaux comptes) vers la Base 2 avec access.

Depuis quelques temps nous nous sommes rendus compte que certains nouveaux comptes n'existaient pas dans la base 2. Et il nous ait impossible de savoir quels sont les comptes qui manquent (je suppose qu'il y en a une centaine).

Je voulais savoir s'il existait une méthode de comparaison entre 2 tables de 2 bases différentes.

ex:

je souhaite comparer les tables suivantes :

companyName.tablecompany.base1 -> companyName.tablecompany.base2

merci par avance.

P.S : notre version de SQL server est SQL entreprise manager version 8.0
A voir également:

16 réponses

excuse moi. en fait dans la requete "SELECT t1.id
FROM test1.table1 t1
WHERE t1.id not in(select id from test2.table2)
LIMIT 0 , 30 " test1 et test2 sont les noms des 2 bases, table1 et table2 sont leur tables respectives. id est juste le nom d'une colonne, j'ai pris id en exemple, mais ça pourrait être nom... Ensuite, t1 et t2 sont des alias, c'est à dire qu'au lieu de réécrire test1.table1 à chaque fois, t'écris juste t1. t1.id désigne donc la colonne id de la table table1 de la base base1. Le limit 0,30 signifie qu'il affiche les 30 premiers résultats à partir du début. J'espère que c'est plus clair.
6
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
20 févr. 2008 à 15:16
en fait je t'explique ^^

J'ai le logiciel de comm, Goldmine, qui utilise la bdd 1. Chaque lundi je fais la commande suivante dans le logiciel Goldmine (qui permet les requêtes SQL, heureusement^^)

select recid,company,address1,address2,address3,city,state,zip,key1,key3,createon from contact1 where createon > "02/10/2008" and createon < "02/16/2008"
order by createon

cette simple requête me sort une liste (avec ce que tu vois dans le select) qui est exportable sous excel.
J'importe le fichier excel dans access, et une macro (que je n'ai pas faite moi-même) import cette liste dans la bdd n°2 !

en fait tu as le schéma suivant :

contact1.bdd1 ->import.bdd2 ->company.bdd2

l'import depuis access fait 2 requête, une insertion dans la table "import" et une insertion dans les autres tables nécessitant les informations que je viens de sortir.

Evidemment, il y a des erreurs. SI les données existent déjà dans la bdd 2, l'importation est refusée via cette requête faite par Goldmine.

Et il arrive souvent que certaines lignes ne sortent pas et donc ne sont pas importées dans la bdd n°2.

Donc, il faut que je fasse un comparatif juste de la table contact1 dans la base 1 et de la table company dans la base 2.
A partir des données qui ressortiront de ce comparatif, je pourrais alors faire une modification dans Goldmine qui ferait ressortir les données manquantes.

J'ai pensé aussi à créer un bdd de test et importer les tables contact1 et company dedans et faire un comparatif interne. Mais je ne sais pas ce que ça vaut.

P.S : j'ai oublié de préciser !!! Goldmine ne peut reçevoir qu'UNE seule base de donnée, dans mon exemple la bdd n°1.
1
goldo Messages postés 72 Date d'inscription mercredi 23 juin 2004 Statut Membre Dernière intervention 28 juin 2010 8
19 févr. 2008 à 11:11
Je ne connais pas très bien mySQL mais peux-tu importer par exemple la table 1 dans la bdd de la table 2 ?

Après je pense qu' il suffit de faire une requête SQL pour voir les nouveaux comptes qui sont dans la table 1 et pas dans la 2.
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
19 févr. 2008 à 11:27
Bonjour,

je ne veux surtout pas importer la table 1 vers la 2.... juste une comparaison.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 févr. 2008 à 11:52
bonjour,

Peut être peux-tu faire la même requête sur chaque base et ensuite faire une moulinette pour extraire les éléments manquants en comparant les 2 recordsets. Il ne restera plus qu'à faire les insert dans la table 2.

Un peu lourd.

;o)

polux
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
19 févr. 2008 à 11:53
Bonjour,

que veux-tu dire par faire une moulinette ? Je ne suis pas experte en SQL ^^
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 févr. 2008 à 12:00
lol Une moulinette est une fonction qui va comparer les items un par un, c'est dire que dans une boucle le premier item de la table de la base1 va être comparer à tous les items de la table de la base 2 puis passer au second ... etc ... c'est à coder en VB.
Si tu as un problème, je veux essayer d'aider à le faire

;o)

polux
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
19 févr. 2008 à 14:04
oula la lol, ça devient compliqué pour moi ^^

Est-ce que je peux utiliser du code VB dans SQL ? où c'est après avoir extrait les données ?! Mais dans ce cas-là je dois faire une extraction des données sous quel format ?

merci.

0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 févr. 2008 à 15:26
Non, tu ne peux pas utiliser du VB en SQL, mais en VB, tu peux passer des instructions SQL à une base de données ... et ensuite traiter les données récupérées.
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
19 févr. 2008 à 18:00
bon lol,
je sais ce qui me reste à faire, prendre mon bouquin de VB et m'y mettre ^^
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 févr. 2008 à 19:11
oui lol .. tu as VB6 sur ton ordi ?
0
salut. Dans mysql par exemple tu peux comparer deux tables de deux bases différentes:
SELECT t1.id
FROM test1.table1 t1
WHERE t1.id not in(select id from test2.table2)
LIMIT 0 , 30
Cette requete renvoie tous les ids de table1 de la base1 qui ne sont pas dans la 2.
0
bonjour milk_d
moi aussi j'ai le même problème mais j'ai crer les base de données sous sql server et non pas mysql et je veux et je veux recopie les enregistrements qui n'existe pas dans une et existe dans l'autre afin que les même enregistrements soit dans les deux bases.est ce qu'il a une différence si oui dite moi la quelle
0
je veux ajouter que les base de donnée ne sont pas dans le meme serveur
merci d'avance
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
20 févr. 2008 à 09:05
Je te remercie Mike mais je dois avouer que tes t1.id je les comprends pas par rapport aux noms que j'ai donné. Autant T1, je comprends que c'est la table de la bdd 1 mais id je ne vois pas ce que c'est !

c'est un peu flou surtout quand tu mets test1.table1 t1, est-ce que t1 représente table1 ou test1 ????


merci.

sinon pour répondre à polux, je ne crois pas avoir VB 6. Je ne sais plus quelle est la version, faudrait que je retrouve VB sur mon pc lol ^^
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
20 févr. 2008 à 10:17
Dis moi Polux,

est-ce que tu parles de VB ou VBScript ? où est-ce que c'est la même chose ?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
20 févr. 2008 à 14:37
bonjour,

Je parle de VB et ce n'est pas tout à fait la même chose que VBScript. Ce n'est pas génant si tu n'as pas VB sur ton PC, on peut faire ça avec Access ou même Excel avec VBA (même si j'aime pas trop) lol. Ou tout autre langage que tu puisses compiler.

Par contre, si j'ai bien compris, il y a une base de données (base1) qui est installée sur un serveur avec
MS SQL (SQL serveur). Chaque semaine il y a une extraction de cette base1 vers une base de données (base2) vers Access. Comment est faite cette extraction ? est-ce un import de table ? Ou il y a-t-il une requête pour alimenter la base Access ?
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
21 févr. 2008 à 08:56
Je te remercie pour tes explications, effectivement c'est plus clair.
-1