SQL garder seulement les 5 dernières...

Vroom -  
 Vroom -
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 402 Date d'inscription   Statut Membre Dernière intervention   13
 
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
A.Nonymous
 
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
Vroom
 
J'ai essayé, mais impossible de le mettre en place.
0
Vroom
 
...
0

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

Posez votre question
Nowne Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   4
 
Je cherche aussi...

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