[Access] Comparer deux grosses tables
Fermé
enigmatoile
Messages postés
730
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 mars 2008
-
13 mars 2007 à 16:05
HelloWorld - 12 mars 2012 à 17:40
HelloWorld - 12 mars 2012 à 17:40
A voir également:
- Comparer deux tables sql
- Deux comptes whatsapp - Guide
- Deux ecran pc - Guide
- Tables des matieres - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Comparer prix amazon - Guide
6 réponses
GauthierS
Messages postés
14
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
16 novembre 2021
13
4 sept. 2007 à 15:22
4 sept. 2007 à 15:22
Je ne sais pas si ce sujet est toujours d'actualité, mais voici quelque chose à essayer:
Select table1.id, table1.champ1, table1.champ2
From table1 left join table2 on (table1.id=table2.id and table1.champ1=table2.champ1 and table1.champ2=table2.champ2)
Where table2.id Is Null
Cette méthode devrait renvoyer tous les enregistrements de la table1 qui ne sont pas trouvé dans la table2
Attention que si une valeur est Null dans les 2 tables, comme Null n'est pas égal à Null, ça va aussi renvoyer ces enregistrements.
Select table1.id, table1.champ1, table1.champ2
From table1 left join table2 on (table1.id=table2.id and table1.champ1=table2.champ1 and table1.champ2=table2.champ2)
Where table2.id Is Null
Cette méthode devrait renvoyer tous les enregistrements de la table1 qui ne sont pas trouvé dans la table2
Attention que si une valeur est Null dans les 2 tables, comme Null n'est pas égal à Null, ça va aussi renvoyer ces enregistrements.
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
13 mars 2007 à 17:16
13 mars 2007 à 17:16
Je suis peut -être trop optimiste, mais si les champs étaient indexés par date, il suffirait de regarder le dernier enregistrement de la première table et de partir de celui-ci pour voir combien ont été ajoutés dans l'autre.
évidemment ça ne marche que si tu ne dois pas trouver les enregistrements déjà existants qui auraient été modifiés...
Par ailleurs, si tu inclus deux tables non liées dans une même requête, tu vas avoir des erreurs: Access va afficher pour chaque enregistrement d'une table tous les enregistrements de l'autre table
Tu pourrais essayer de créer un lien entre les deux tables (clé primaire) puis choisir un des champs pouvant avoir été modifié et exécuter ce type de requête:
SELECT Table1.ChampX
FROM Table1 INNER JOIN Table2 ON Table1.Clé = Table2.Clé
WHERE (((Len([Table1].[ChampX]))<>Len([Table2].[ChampX])));
En combinant les deux méthodes et en répétant éventuellement sur les autres champs mis à jour, ça devrait fonctionner...
évidemment ça ne marche que si tu ne dois pas trouver les enregistrements déjà existants qui auraient été modifiés...
Par ailleurs, si tu inclus deux tables non liées dans une même requête, tu vas avoir des erreurs: Access va afficher pour chaque enregistrement d'une table tous les enregistrements de l'autre table
Tu pourrais essayer de créer un lien entre les deux tables (clé primaire) puis choisir un des champs pouvant avoir été modifié et exécuter ce type de requête:
SELECT Table1.ChampX
FROM Table1 INNER JOIN Table2 ON Table1.Clé = Table2.Clé
WHERE (((Len([Table1].[ChampX]))<>Len([Table2].[ChampX])));
En combinant les deux méthodes et en répétant éventuellement sur les autres champs mis à jour, ça devrait fonctionner...
enigmatoile
Messages postés
730
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 mars 2008
5
13 mars 2007 à 17:29
13 mars 2007 à 17:29
Y'a pas de notions de date dans mes tables donc...
Sinon oui, je crée des liens quand je fais mes requetes, ce sont les tables qui n'ont de relations directes.
Ta deuxième idée ne me semble pas applicable à mon cas : jepeux avoir ddes cas où le champ1 est égal mais le champ2 différent...
Mais bon avec ma réponse au dessus je pense avoir trouvé un résultat viable :)
Sinon oui, je crée des liens quand je fais mes requetes, ce sont les tables qui n'ont de relations directes.
Ta deuxième idée ne me semble pas applicable à mon cas : jepeux avoir ddes cas où le champ1 est égal mais le champ2 différent...
Mais bon avec ma réponse au dessus je pense avoir trouvé un résultat viable :)
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
13 mars 2007 à 16:15
13 mars 2007 à 16:15
Quelques renseignements complémentaires...
Quand tu dis que ta structure est identique, tu veux dire que tous les champs sont communs?
Comment fonctionnent les clés primaires?
Et les relations?
Quand tu dis que ta structure est identique, tu veux dire que tous les champs sont communs?
Comment fonctionnent les clés primaires?
Et les relations?
enigmatoile
Messages postés
730
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 mars 2008
5
13 mars 2007 à 16:43
13 mars 2007 à 16:43
Oui, tous les champs sont identiques.
Les clés sont des nuémros autos.
Pas de relations entre les tables, il s'agit de memes infos à un instant T puis T+1.
Entre temps j'ai trouvé des pistes de réflexion:
Globalement ma table prend les valuers suivantes
service1 serveur1
service 2 servuer1
service a serveur2
serviceb serveur 2
Je pensais compter le nombre de services par serveur, et comparer ces nombres entre les 2 tables.
A ce moment là seulement je chercherai les nouveaux services; et pour un serveir fixé...
Il y a une autre solution plus hard, qui consisterait à faore un haché des services pour cq serveur, mais j'aimerais bien échapper à ca...
Les clés sont des nuémros autos.
Pas de relations entre les tables, il s'agit de memes infos à un instant T puis T+1.
Entre temps j'ai trouvé des pistes de réflexion:
Globalement ma table prend les valuers suivantes
service1 serveur1
service 2 servuer1
service a serveur2
serviceb serveur 2
Je pensais compter le nombre de services par serveur, et comparer ces nombres entre les 2 tables.
A ce moment là seulement je chercherai les nouveaux services; et pour un serveir fixé...
Il y a une autre solution plus hard, qui consisterait à faore un haché des services pour cq serveur, mais j'aimerais bien échapper à ca...
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
13 mars 2007 à 22:12
13 mars 2007 à 22:12
Content pour toi si tu as la solution...
Pour l'avenir, tu n'ajouterais pas un champ DateCréation et un autre DateModification, ça t'éviterait de te casser la tête...
Bonne soirée.
Pour l'avenir, tu n'ajouterais pas un champ DateCréation et un autre DateModification, ça t'éviterait de te casser la tête...
Bonne soirée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci GauthiersS, tu m'as sauvé la vie. Cela fait Trois jours que je suis dessus.
Pour ceux qui buchent comme moi, ne faites pas la même erreur, ne travaillez pas sur des REQUÈTES, mais bien sur des TABLES !
Have Fun
Pour ceux qui buchent comme moi, ne faites pas la même erreur, ne travaillez pas sur des REQUÈTES, mais bien sur des TABLES !
Have Fun
Bonjour à tous,
Je suis nouveau sur ce forum et novice sur access / sql.
Je vous expose mon problème j'ai une base de données avec 2 tables comme suit :
Table1 Table2
Champ1 Champ1
enregistrement1 enregistrement1
enregistrement2 enregistrement2
enregistrement3 enregistrement3
Le champ1 de la Table1 contient une liste produit et le champ1 de la Table2 contient une liste aléatoire de mots-clés.
Je souhaiterai (sous Access) créé une requête de sorte qu'il me selectionne et m'affiche tous les enregistrements du champ1 (Table1) qui contiennent un mot-clé du champ1 (Table2).
Par ex :
Table1 / Champ1 contient "CremeSolaire", et la table 2 / Champ1 contient "Solaire".
Je souhaite donc que Cremesolaire qui contient "Solaire" soit selectionnée et affichée dans un rapport ou une nouvelle table.
Aidez moi s'il vous plaît, j'arrête pas d'essayer je pète un plomb.
Merci bien.
Je suis nouveau sur ce forum et novice sur access / sql.
Je vous expose mon problème j'ai une base de données avec 2 tables comme suit :
Table1 Table2
Champ1 Champ1
enregistrement1 enregistrement1
enregistrement2 enregistrement2
enregistrement3 enregistrement3
Le champ1 de la Table1 contient une liste produit et le champ1 de la Table2 contient une liste aléatoire de mots-clés.
Je souhaiterai (sous Access) créé une requête de sorte qu'il me selectionne et m'affiche tous les enregistrements du champ1 (Table1) qui contiennent un mot-clé du champ1 (Table2).
Par ex :
Table1 / Champ1 contient "CremeSolaire", et la table 2 / Champ1 contient "Solaire".
Je souhaite donc que Cremesolaire qui contient "Solaire" soit selectionnée et affichée dans un rapport ou une nouvelle table.
Aidez moi s'il vous plaît, j'arrête pas d'essayer je pète un plomb.
Merci bien.
5 avril 2008 à 20:01
je suis actuellement sur un projet et je dois comparer deux tables que j'ai au préalable importées d'exel.
L'objectif est de savoir comment savoir quelles sont les données modifiées, supprimées, et mise à jour chez l'une et pas chez l'autre.
Je compte sur vous svp,merci!!
Modifié par Voldorak le 31/01/2012 à 14:05
12 mars 2012 à 17:40