Bonjour,
Voici mon contexte (je schématise juste mon problème):
J'ai une table du type:
rowId personneId strAction
rowId: cle primaire auto incremente
personneId: identifiant
strAction: chaine de caractere
Type d'enregistrement
Ce que je veux faire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 1:0123:xxxx 2:0123:xxxx 3:0123:xxxx 4:0456:xxxx 5:0456:xxxx 6:0123:xxxx 7:0789:xxxx ... ... ... 120000000:0123:xxxx ...
Supprimer tout les éléments de la table sauf les 5 derniers d'un même id.
La bd fonctionne sous forme de roulement, les enregistrements les plus vieux sont supprimés.
Sauf que les personnes ne font pas tous autant d'actions dans le même laps de temps.
Par exemple:
0123 fera par exemple 10.000 actions par mois
0456 fera par exemple 100 actions par mois
0789 fera par exemple 1 actions par mois
Le nombre de personne est variable [1 ; beaucoup].
Le nombre d'actions est variable [1 ; a très beaucoup].
Et je souhaite garder les 5 dernières actions de chacun. (Le 5 est arbitraire, je dois garder suivant les projets de 1 à 10 valeurs).
Je ne trouve pas de moyen simple d'y parvenir.
Et je me retrouve a essayer de passer par une table intermédiaire avec des requêtes de fou.
Avant de continuer ma galère, j'aurai aimé savoir si je suis pas passé à cote de quelque chose.
Est-ce que c'est possible de faire ce que je veux simplement?
Je prend toutes les pistes
Merci
PS: je suis sous MS-SQL Server 2005
Partager