Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/01/2011, 11h17   #1
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 159
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2007
Messages : 159
Points : 39
Points : 39
Par défaut Erreur supprimer doublons

Bonjour à tous,

Je souhaite supprimer les doublons d'une Table en faisant un test sur 1 champ pour cela j'ai procédé de la façon suivante :
1 - Création d'une requête de recherche de doublons avec l'assistant et qui fonctionne très bien dont voici le code :
Code :
1
2
3
4
SELECT First(T_Etudes.N°OSR) AS N°OSRChamps, Count(T_Etudes.N°OSR) AS NombreDeDbls
FROM T_Etudes
GROUP BY T_Etudes.N°OSR
HAVING (((Count(T_Etudes.N°OSR))>1));
2 - Création d'une requête de suppression à partir de ma requête précédente et là j'ai un message d'erreur : IMPOSSIBLE DE SUPPRIMER DANS UNE TABLE SPECIFIEE, voici le code :
Code :
1
2
DELETE T_Etudes.*, R_DoublonsEtudes.N°OSRChamps
FROM T_Etudes, R_DoublonsEtudes;
Merci de votre aide
jouclar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 11h30   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
bonjour,

A tester:

Code sql :
1
2
DELETE * FROM T_Etudes
WHERE N°OSR IN (SELECT N°OSRChamps FROM R_DoublonsEtudes)
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 12h00   #3
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 159
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2007
Messages : 159
Points : 39
Points : 39
Merci pour ta réponse f-leb,

Ta requête fonctionne mieux que la mienne cependant il supprime tout, je souhaite garder au moins un exemplaire de mon enregistrement.
jouclar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 13h30   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
Dans ce cas quel exemplaire conserver ?

Tu as un autre champ discriminant ? N°OSR est clé primaire ?

Eventuellement donne un exemple de contenu de T_Etudes avec un doublon à supprimer.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 14h12   #5
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 159
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2007
Messages : 159
Points : 39
Points : 39
oui excellentes auxquelles... je n'avais pas pensées

Dans cette même Table j'ai un champ qui enregistre la date et l'heure de saisie de l'enregistrement. Je souhaite supprimer les plus récents et ne garder que le plus anciens.

Champ test doublons : N°OSR
Champ Date : DateImport

Dans le fichier joint :
- Garder la ligne 22
- Supprimer lignes 23 et 24

Merci
Fichiers attachés
Type de fichier : zip T_Etudes.zip (6,1 Ko, 4 affichages)
jouclar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 15h45   #6
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 410
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 410
Points : 4 439
Points : 4 439
re,

il y a celle-là qui marche:
Code sql :
1
2
3
4
5
6
7
 
DELETE * FROM T_Etudes T
WHERE T.DateImport > ANY
    (
      SELECT U.DateImport FROM T_Etudes U 
      WHERE U.DateImport<>T.DateImport AND U.N°OSR=T.N°OSR
    );

voir l'aide Access (F1) pour ANY
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 09h20   #7
Nouveau Membre du Club
 
Inscription : novembre 2007
Messages : 159
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : novembre 2007
Messages : 159
Points : 39
Points : 39
Merci pour cette réponse.

En fait en relisant ton message d'hier :
Citation:
N°OSR est clé primaire ?
cela m'a donné l'idée de mettre N°OSR en indexé sans doublons et cela fonctionne très bien maintenant.

Merci de ton aide
jouclar est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h37.


 
 
 
 
Partenaires

Hébergement Web