ah maudit, j'avais oublié de me relire avant de cliquer...
C'est qu'il faut utiliser la table temporaire...
create temporary table `tmp_journee_points` (
`journee_id` int,
`user_id` int,
`points` int,
`idx` int auto_increment,
primary key (`user_id`, `idx`)
);
On peuple la table temporaire avec les données avec les pointages les plus élevés en premier. En procédant ainsi, la clé `idx` aura 1 pour le plus élevé, 2 pour le second, ainsi de suite.
insert into `tmp_journee_points` (`journee_id`, `user_id`, `points`)
select `journee_id`, `user_id`, `points`
from `journee_points`
order by `points` DESC;
Maintenant, on simule le
limit 15 en se basant sur `idx`... Il faut se rappeler que le
auto_increment s'incrément selon sa position dans la clé.
select avg(j1.`points`) as 'moyenne',
j1.`user_id` as 'user_id'
from `journee` as j1
left join `tmp_journee_points` as j2 using (`user_id`)
where (j2.`idx` <= 15);