requête pour effacer les anciens messages

Eléphant du PHP | 89 Messages

01 déc. 2012, 22:42

Bonsoir à tous le monde voila j'ai une table message qui contient les champs suivants (user ,message) j'aimerais programmer une requête sql qui va me permettre de garder que les 10 derniers messages d'utilsiateur dans la table
Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

03 déc. 2012, 23:04

salut,


Tu peux par exemple employer une sous requête pour sélectionner les clef primaire qui t’intéresse ou les exclure.

par exemple :
delete from messages where id not in (select id from message order by id desc limit 10)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 89 Messages

06 déc. 2012, 01:44

bonsoir merci stp pk tu as ajouter desc?
Merci

ViPHP
xTG
ViPHP | 7331 Messages

06 déc. 2012, 10:01

Pour que le LIMIT ne prenne que les 10 derniers. :)

Eléphant du PHP | 130 Messages

06 déc. 2012, 10:06

Bonjour,

Le DESC est la pour signifier que l'on sélectionne les 10 dernier message. De ce fait on supprime tous les messages qui ne sont pas dans les 10 derniers messages. Ceci suppose que l'id de ta table message soit un auto_increment.

Avec la requête de moogli tu gardes les 10 derniers messages. Après veux tu garder les 10 derniers message de chaque utilisateur ? Ou juste les 10 derniers messages ?

ViPHP
AB
ViPHP | 5818 Messages

06 déc. 2012, 20:15

Au passage, je t'encourage vivement à mettre un champ "date_message" au format "datetime" dans ta table message. Les id ne font pas partie du métier de l'application et l'on ne devrait pas avoir à faire de telles requêtes. Et puis un champ datetime t'ouvrirais d'autres possibilités...