Me estoy rompiendo la cabeza con este query que es para obtener una lista de los usuarios con más puntos siempre y cuando los usuarios tengan al menos una foto en la tabla
fotos.
La tabla
puntaje tiene los puntos que recibio el usuario cada dia, por eso hago SUM() para sumar todo el periodo.
El problema es que depende la cantidad de fotos que tenga el usuario (JOIN con tabla fotos) se multiplica el valor de SUM(). No entiendo porque hace eso si estoy usando GROUP BY usuario!
Este es el query:
Código:
SELECT
puntaje.usuario,
sum(puntaje.puntos) as totalPuntos,
usuarios.id as usuarioId
FROM
puntaje
INNER JOIN usuarios ON puntaje.usuario=usuarios.usuario
INNER JOIN fotos ON fotos.usuarioId=usuarios.id /*porque debe tener al menos una foto*/
WHERE
usuarios.activo=1 AND
puntaje.fecha >= DATE_SUB(curdate(), INTERVAL 1 MONTH)
GROUP BY puntaje.usuario
ORDER BY totalPuntos DESC
LIMIT 10
¿Que estoy haciendo mal?
Gracias por adelantado!