8710 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

Je fais une requête sur une base de données phpBB pour obtenir les dernières discussions :
$q = 'SELECT topic_id,forum_id,topic_title,topic_time,topic_views,topic_first_poster_name FROM phpbb3_topics WHERE topic_approved = 1 ORDER BY topic_time DESC LIMIT 8;

Les 8 derniers messages sont ainsi récupérés. Ce n'est pas tout à fait ce que je voudrais obtenir. En fait, il me faudrait récupérer les 8 derniers sujets lancés. Avec ma requête on récupère les messages d'un même sujet, il ne faudrait récupérer que le premier.
Je pensais modifier ma requête en comparant la valeur du titre (topic_title) de la recherche précédente à la recherche en cours (je parle ici de la recherche dans la requête). Mais comment faire cela ?
Un autre moyen était de récupérer davantage de résultats (par exemple 30) et de traiter la requête par après en php pour obtenir les 8 derniers sujets, mais ce n'est vraiment pas une solution fiable...
Pour info la structure de la table phpbb3_topics : https://wiki.phpbb.com/Table.phpbb_topics

Merci d'avance
Modifié par jojaba (29 Apr 2016 - 07:50)
Bonjour !

Je ne suis pas très sure de moi et à votre place je ferais preuve de circonspection mais il semblerait qu'on arrive à ce que vous voulez en remplaçant 'ORDER BY' par 'GROUP BY'...
Smiley smile
Modérateur
Merci Zelena.
C'était aussi simple que cela !!! (je m'attendais à quelque chose de bien plus compliqué).
En fait, j'ai utilisé "GROUP BY" avant "ORDER BY" et le tour était joué !
$q = 'SELECT topic_id,forum_id,topic_title,topic_time,topic_views,topic_first_poster_name FROM phpbb3_topics WHERE topic_approved = 1 GROUP BY topic_title  ORDER BY topic_time DESC LIMIT 8;

Résolu Smiley smile
Modifié par jojaba (29 Apr 2016 - 19:56)