Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2009, 23:47
quebien
 
Fecha de Ingreso: febrero-2007
Mensajes: 309
Antigüedad: 18 años
Puntos: 16
Ayuda con INNER JOIN y SUM

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!
__________________
Responder encuestas