Suppression doublons entre 2 tables

Fermé
LoicL89 Messages postés 15 Date d'inscription jeudi 14 mai 2015 Statut Membre Dernière intervention 16 mai 2015 - 15 mai 2015 à 21:23
 Tessel75 - 16 mai 2015 à 11:55
Bonjour,

je souhaiterais supprimer les doublons entre deux tables : Essai5m et Essai2m contenant les champs ID, X, Y et Z. Je voudrais que lorsqu'un point a les mêmes coordonnées dans les deux tables (XYZ identiques) il soit supprimer de la table Essai5m. J'ai écrit cette requête mais elle ne fonctionne pas (il me demande de rentrer un paramètre pour X Y et Z de la table Essai2m...).

DELETE Essai5m.X, Essai5m.Y, Essai5m.Z, Essai5m.ID
FROM Essai5m
WHERE (((Essai5m.X)=Essai2m.X) And ((Essai5m.Y)=Essai2m.Y) And ((Essai5m.Z)=Essai2m.Z));


Merci d'avance !
A voir également:

7 réponses

jee pee Messages postés 40288 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 5 octobre 2024 9 360
15 mai 2015 à 22:22
Bonjour,

A essayer, je ne sais pas si EXISTS fonctionne avec Access

DELETE FROM Essai5m E5
WHERE EXISTS (select * from Essai2m E2
where E5.ID=E2.ID and E5.X=E2.X and E5.Y=E2.Y and E5.Z=E2.Z) 


cdlt
0
LoicL89 Messages postés 15 Date d'inscription jeudi 14 mai 2015 Statut Membre Dernière intervention 16 mai 2015
15 mai 2015 à 22:26
Bonsoir et merci pour la réponse. Je viens d'essayer et Access me demande toujours d'entrer une valeur de paramètre...
0
Bonjour,
La fonction "exists" n'existe pas dans Access.
Par contre en utilisant l'assistant création de requête, il y a un assistant "Recherche Doublons". Il suffit alors de suivre les indications de l'assistant.
La difficulté est que si tu veux supprimer les doublons, il n'y a pas de fonction simple pour le faire. Alors soit le faire à la main, soit goupiller une fonction suppression à partir de la table des doublons. Mais attention à ne pas tout supprimer.
Selon la construction de ta table, tu peux utiliser les propriétés des champs des tables en construisant un index, soit simple soit multiple, avec le caractère "Ne pas autoriser les doublons"
Bonne suite
0
LoicL89 Messages postés 15 Date d'inscription jeudi 14 mai 2015 Statut Membre Dernière intervention 16 mai 2015
15 mai 2015 à 22:49
Bonjour et merci pour cette réponse. Mais l'assistant de recherche de doublons ne fonctionne pas uniquement à l'intérieur d'une seule table? Car je recherche les doublons entre 2 tables...
0

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

Posez votre question
jee pee Messages postés 40288 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 5 octobre 2024 9 360
15 mai 2015 à 22:58
et

DELETE FROM Essai5m E5
WHERE (E5.ID, E5.X, E5.Y, E5.Z) = 
(select E2.ID, E2.X, E2.Y, E2.Z from Essai2m E2
where E5.ID=E2.ID and E5.X=E2.X and E5.Y=E2.Y and E5.Z=E2.Z)


ou

DELETE FROM Essai5m E5
WHERE (E5.ID, E5.X, E5.Y, E5.Z) in 
(select E2.ID, E2.X, E2.Y, E2.Z from Essai2m E2)


0
LoicL89 Messages postés 15 Date d'inscription jeudi 14 mai 2015 Statut Membre Dernière intervention 16 mai 2015
15 mai 2015 à 23:06
Le message a changé et est devenu : "Vous avez écrit une sous requete pouvant renvoyer plus d'un champ sans utiliser le mot réservé EXISTS dans la clause FROM de la requete principale. Révisez l'instruction SELECT de la sous requete pour obtenir un seul champ."

Je n'y comprend plus rien !
0
jee pee Messages postés 40288 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 5 octobre 2024 9 360
15 mai 2015 à 23:32
Comme je l'ai dit je ne connais pas access, essaie

DELETE FROM Essai5m E5
WHERE EXISTS (select E2.ID, E2.X, E2.Y, E2.Z from Essai2m E2
where E5.ID=E2.ID and E5.X=E2.X and E5.Y=E2.Y and E5.Z=E2.Z)
0
LoicL89 Messages postés 15 Date d'inscription jeudi 14 mai 2015 Statut Membre Dernière intervention 16 mai 2015 > jee pee Messages postés 40288 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 5 octobre 2024
16 mai 2015 à 09:42
Non cela ne fonctionne pas non plus.
0
Re-...
J'avais mal lu la question initiale et je n'avais pas fait attention au fait qu'il s'agissait de doublons d'une table par rapport à une autre.
Essaie :
"DELETE Essai5m.*, Essai2m.ID FROM Essai2m LEFT JOIN Essai5m ON (((Essai2m.X)=Essai5m.X) And ((Essai2m.Y)=Essai5m.Y) And ((Essai2m.Z)=Essai5m.Z));"
Mais ce serait bien plus simple de construire d'abord ta requête en mode graphique, et ensuite de la traduire en mode SQL
Bonne suite
0