Bonjour à tous, et merci d'accorder un peu de votre temps à mon problème.
Voilà, j'ai actuellement une requête qui marche parfaitement et qui fait ce que je lui demande ( j'extrais des topics d'un forum PHPBB pour les afficher sur une autre page ) :
La requête m'affiche bien les 10 derniers topics créés, qu'ils soient dans le forum 4 , 15 ou 16. Il m'en affiche 10 (limit 0,9).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT t.topic_title, t.topic_id, t.topic_first_poster_name, t.topic_time, t.topic_replies, t.topic_poster, t.topic_first_post_id, t.forum_id, p.post_text, u.topic_id AS publication FROM phpbb_topics t LEFT JOIN phpbb_posts p ON(t.topic_first_post_id=p.post_id) LEFT JOIN site_publications u ON(t.topic_id=u.topic_id) WHERE t.forum_id=4 OR t.forum_id=15 OR t.forum_id=16 ORDER BY t.topic_time DESC LIMIT 0,9
Jusque-là, aucun souci.
Le problème étant que je voudrais sélectionner 10 topics du forum 4, 10 topics du forum 15 et 10 topics du forum 10 ( en clair 30 topics divisés sur 3 forums, soit 10 topics par forum).
Evidemment, la solution bête et méchante et pas optimisée serait de faire 3 SELECT avec un WHERE : t.forum_id=numero du topic comme condition.
Sauf que je me retrouverais avec 3 requêtes SQL, et je ne veux pas. Je voudrais pouvoir sélectionner les 10 derniers topics de chaque forum mais en une seule requête.
J'ai regardé sur le forum, testé des UNIONS, essayé de voir avec des tables temporaires, mais au final je n'arrive à rien et je ne suis totalement perdu.
Merci d'avance pour votre aide
Partager