OVH Cloud OVH Cloud

suppression de lignes par SQL

2 réponses
Avatar
Ma Dalton
bonjour,
j'ai une table qui contient

NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
22222222 2000
33333333 2000
33333333 2001
33333333 2002
44444444 2003

pour chaque NoDossier identique, je souhaite conserver le le plus ancien
seulement et donc de supprimer le reste. Ainsi, je vise à obtenir

NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
33333333 2000
44444444 2003

J'arrive à faire la sélection avec

SELECT test.NoDossier, First(test.Annee) AS PremierDeAnnee
FROM test
GROUP BY test.NoDossier
ORDER BY test.NoDossier, First(test.Annee);

Mais pour la suppression, je n'y arrive pas. Aussi, j'ai un trouble pour
l'affichage de ma sélection si j'ajoute ",*" au select afin d'inclure tous
les champs de la table

merci de me venir en aide

2 réponses

Avatar
Bonjour
je ne suis pas sur que ca marche mais c'est déjà ca. Je
pense que ta requête d'éffacemùent pêut s'écrire comme
suit:
DELETE *
FROM Test
WHERE Test.Nodossier NOT IN SELECT test.NoDossier, First
(test.Annee) AS PremierDeAnnee
FROM test
GROUP BY test.NoDossier
ORDER BY test.NoDossier, First(test.Annee);
je pense qu'un truc de ce genre la peut se tenter afin de
ne pas devoir tester en direct , verifie la syntaxe en la
copiant dans une requête access
Sur ce bon après midi et bon courage
-----Message d'origine-----
bonjour,
j'ai une table qui contient

NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
22222222 2000
33333333 2000
33333333 2001
33333333 2002
44444444 2003

pour chaque NoDossier identique, je souhaite conserver
le le plus ancien

seulement et donc de supprimer le reste. Ainsi, je vise
à obtenir


NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
33333333 2000
44444444 2003

J'arrive à faire la sélection avec

SELECT test.NoDossier, First(test.Annee) AS
PremierDeAnnee

FROM test
GROUP BY test.NoDossier
ORDER BY test.NoDossier, First(test.Annee);

Mais pour la suppression, je n'y arrive pas. Aussi,
j'ai un trouble pour

l'affichage de ma sélection si j'ajoute ",*" au select
afin d'inclure tous

les champs de la table

merci de me venir en aide



.



Avatar
Ma Dalton
Impossible en une seule passe, alors il faut tricotter ! J'ai donc
reproduit quelques SQL successifs dans VBA pour résoudre mon problème.

"Ma Dalton" a écrit dans le message news:

bonjour,
j'ai une table qui contient

NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
22222222 2000
33333333 2000
33333333 2001
33333333 2002
44444444 2003

pour chaque NoDossier identique, je souhaite conserver le le plus ancien
seulement et donc de supprimer le reste. Ainsi, je vise à obtenir

NoDossier Annee (d'autres champs...X-Y-Z)
11111111 1998
22222222 1999
33333333 2000
44444444 2003

J'arrive à faire la sélection avec

SELECT test.NoDossier, First(test.Annee) AS PremierDeAnnee
FROM test
GROUP BY test.NoDossier
ORDER BY test.NoDossier, First(test.Annee);

Mais pour la suppression, je n'y arrive pas. Aussi, j'ai un trouble pour
l'affichage de ma sélection si j'ajoute ",*" au select afin d'inclure tous
les champs de la table

merci de me venir en aide