Bonjour,
Je souhaite extraire des résultats d'une table et je cherche à savoir si c'est possible en une seule requête car moi je n'y arrive pas.
J'ai une table dont la structure est composée des champs suivants :
id (int), user_id (int),media_type (int),media_id (int),date_update(datetime)
Je veux récupérer par exemple les dix enregistrements correspondant aux dix derniers media (media_type) de type X en sachant que je ne veux en prendre que un maximum pour un utilisateur (user_id)
J'ai essayé les deux requêtes suivantes qui ne renvoient pas le résultat souhaité :
La clause distinct ne sert à rien car c'est le triplet des champs à renvoyer qui est pris en compte et lui est tout le temps unique à cause de la valeur media_id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT DISTINCT user_id,media_type,media_id FROM ma_table WHERE media_type = 3 ORDER BY date_update DESC LIMIT 0,10
Ne renvoie pas le résultat voulu, le tris par date ne semble pas être fait en premier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT user_id,media_type,media_id FROM ma_table WHERE media_type = 3 GROUP BY user_id ORDER BY date_update DESC LIMIT 0,10
Si je décompose il me faut d'une part trié par date (date_update) mes enregistrements, sélectionner ceux qui sont du bon type (media_type) et en prendre autant que souhaité mais un seul par utilisateur ( user_id)
Je ne suis pas sur que cela se fasse en une requête mais étant donné mon niveau je préfère me tourner vers vous.
En vous remerciant
Partager