Archivage de lignes

kariboo
Invité n'ayant pas de compte PHPfrance

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

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'

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Kariboo
Invité n'ayant pas de compte PHPfrance

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 ;)