Hola de nuevo compañer@ cloner:
Aunque no debería continuar con este post debido a que tu pregunta está planteada para MySQL y esto es un foro de SQL Server sí me gustaría hacerte un comentario al respecto de tu último post.
Creo que ni siquiera le echaste un vistazo a la liga que te puse. La solución que planteas es válida sólo para tres foros, pero según tu lógica si tuvieras 100 foros y quisieras obtener los últimos cuatro topic's de cada uno de ellos entonces !!!tendrías que hacer 100 JOIN's!!!, esto termina por ser poco práctico no crees???
Te pongo un script de cómo se realizaría simulando el ROW_NUMBER(), es decir la explicación de la liga que te puse... igual y no le vas a hacer caso, pero creo que si alguien más tiene un problema similar le puede ayudar.
Código MySQL:
Ver original;
Query OK, 0 rows affected (0.08 sec)
mysql
> insert into phpbb_topics
values (1, 1, '1.1'),(1, 2, '1.2'),(1, 3, '1.3'),(1, 4, '1.4'),(1, 5, '1.5'),(2, 1, '2.1'),(2, 2, '2.2'),(2, 3, '2.3'),(3, 1, '3
.1'),(3, 2, '3.2'),(3, 3, '3.3'),(3, 4, '3.4');
Query OK, 12 rows affected (0.02 sec)
+----------+----------+-------+
| forum_id | topic_id | campo |
+----------+----------+-------+
| 1 | 1 | 1.1 |
| 1 | 2 | 1.2 |
| 1 | 3 | 1.3 |
| 1 | 4 | 1.4 |
| 1 | 5 | 1.5 |
| 2 | 1 | 2.1 |
| 2 | 2 | 2.2 |
| 2 | 3 | 2.3 |
| 3 | 1 | 3.1 |
| 3 | 2 | 3.2 |
| 3 | 3 | 3.3 |
| 3 | 4 | 3.4 |
+----------+----------+-------+
12 rows
in set (0.00 sec
)
mysql> #para obtener sólo los últimos dos topic's de cada forum_id
mysql
> SELECT T1.forum_id
, T1.topic_id
, T1.campo
FROM( -> SELECT o.forum_id
, o.topic_id
, o.campo
, -> (
-> FROM phpbb_topics i
WHERE i.forum_id
= o.forum_id
) -> ) AS rate_index
FROM phpbb_topics o
-> ) T1
-> WHERE rate_index
<= 2; +----------+----------+-------+
| forum_id | topic_id | campo |
+----------+----------+-------+
| 1 | 4 | 1.4 |
| 1 | 5 | 1.5 |
| 2 | 2 | 2.2 |
| 2 | 3 | 2.3 |
| 3 | 3 | 3.3 |
| 3 | 4 | 3.4 |
+----------+----------+-------+
Esto serviría PARA CUALQUIER NÚMERO DE FOROS.
Saludos
Leo