Archivage de lignes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Archivage de lignes

par Kariboo » 21 août 2006, 21:21

Merci beaucoup pour la réponse. Je ne connaissais effectivement pas la commande INSERT ... SELECT.

Le sujet est donc résolu ;)

par Truc » 21 août 2006, 19:27

Salut,
Il faut procéder par étapes :
Insertion puis suppression des lignes.

L'insertion peut se faire à l'aide d'une requête INSERT ... SELECT

Code : Tout sélectionner

INSERT INTO table (id, idPseudo, nbVisiteurs) SELECT id, idPseudo, COUNT(nbVisiteurs) FROM table WHERE `date` < 'date_archivage' GROUP BY idPseudo
Vérifie si le résultat du select est correct.

Ensuite une requête de suppression :

Code : Tout sélectionner

DELETE FROM table WHERE `date` < date_archivage AND date <> '0000-00-00'

Archivage de lignes

par kariboo » 21 août 2006, 15:07

Bonjour,


J'ai une table définie de cette manière:

Code : Tout sélectionner

id | idPseudo | date | nbVisiteurs
... avec différentes données:

Code : Tout sélectionner

1 | 3 | 2006-08-15 | 2 2 | 4 | 2006-08-15 | 3 3 | 4 | 2006-08-16 | 1 4 | 3 | 2006-08-04 | 6 5 | 3 | 2006-08-05 | 8
J'aimerai pouvoir supprimer toutes le lignes âgées de plus de X jours et enregistrer le cumul du nombre de visiteurs pour chaque idPseudo.

Résultat 1 (date < 2006-08-10):

Code : Tout sélectionner

1 | 3 | 2006-08-15 | 2 2 | 4 | 2006-08-15 | 3 3 | 4 | 2006-08-16 | 1 6 | 3 | 0000-00-00 | 14
Résultat 2 (date < 2006-08-16):

Code : Tout sélectionner

3 | 4 | 2006-08-16 | 1 6 | 3 | 0000-00-00 | 16 7 | 4 | 0000-00-00 | 3
Est-ce possible? Merci d'avance.

Kariboo