SQL garder seulement les 5 dernières...

Fermé
Vroom - Modifié par Vroom le 16/01/2011 à 13:32
 Vroom - 20 janv. 2011 à 10:02
Bonjour,

J'ai un site d'hébergement d'images et je souhaite faire un système qui affiche les 5 dernières images hébergées d'une IP. Donc j'enregistre l'IP, le nom de l'image et la date.
Sur la page prévu pour afficher les images je fait un WHERE sur l'IP et une LIMIT jusqu'à 5.
En faisant comme ça, ça fonctionne parfaitement, cependant les autres images reste quand même dans la base de donnée. Comment supprimer les autres entrés jusqu'à 5 ?

Merci

6 réponses

magicshark Messages postés 399 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 6 mai 2014 13
16 janv. 2011 à 18:48
si tu a s bien gerer ta bdd tu peux passer par l'identifaiant si c'est un numero genre tu obtien 355 bah tu fais where id<355-5 tu obtient ton 355 avec une requette qui te conte ton nombre d'occurance
0
Solution "NOT IN (SELECT)" :
DELETE user_image.* FROM userimage
WHERE user_ip = '127.0.0.1'
AND nom_image NOT IN ( SELECT nom_image FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5 )

Solution "LEFT JOIN WHERE pk IS NULL" :
DELETE user_image.* FROM userimage
LEFT JOIN (
SELECT nom_image , user_ip FROM userimage WHERE user_ip = '127.0.0.1' ORDER BY date_creation DESC LIMIT 5
) keep_images USING( user_ip, nom_image )
WHERE keep_images.nom_image IS NULL AND user_ip = '127.0.0.1'
0
J'ai essayé, mais impossible de le mettre en place.
0
...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nowne Messages postés 89 Date d'inscription samedi 30 octobre 2010 Statut Membre Dernière intervention 7 mars 2011 4
17 janv. 2011 à 18:06
Je cherche aussi...

Tu veux bien limiter ta table en nombre d'entrée ?
0
Non, la table doit avoir un nombre d'entrée illimité.
0
up
0