Eu tenho as seguintes tabelas: users , highscores
Eu gostaria de obter os dez melhores resultados no highscore . As pontuações devem ser únicas, ou seja, uma pontuação por usuário . Eu tentei usar INNER JOIN
e GROUP
mas isso não está retornando os dados corretos. Recebo o uid, pontuação, alias e e-mail corretos, mas a hora não está correta. Parece que foi tirado de outro post de recordes. Como obtenho os dados corretos? Assim que encontrarmos a "melhor pontuação", quero todo o resto (tempo) exatamente no mesmo post.
SELECT UID, ALIAS, EMAIL, SCORE, TIME
FROM users t
INNER JOIN (SELECT user_uid, MAX(score) as SCORE, value1 as TIME
FROM highscores
GROUP BY user_uid) x
ON x.user_uid = t.uid
ORDER BY SCORE DESC
LIMIT 0, 10
Puxe o tempo da tabela de recordes separadamente O
MySQL não respeita as agregações padrão ANSI por padrão : daí seus dados duvidosos
Isso pressupõe que cada usuário não tenha várias pontuações altas com o mesmo valor.
Se fizer isso, você precisa de uma segunda tabela derivada com uma agregação para aninhar o x/h JOIN