Excelente!!! Gracias por tu dedicación al responder el mensaje! Aprendi dos cosas que no sabia.
El SQL que me pasaste estaba bien excepto que HAVING va despues del GROUP BY. O sea quedaría asi:
Código:
SELECT
puntaje.usuario,
sum(puntaje.puntos) AS totalPuntos,
usuarios.id AS usuarioId
FROM
puntaje
INNER JOIN usuarios ON puntaje.usuario=usuarios.usuario
WHERE
usuarios.activo=1 AND
puntaje.fecha >= DATE_SUB(curdate(), INTERVAL 1 MONTH)
GROUP BY puntaje.usuario
HAVING
usuarios.id IN (SELECT DISTINCT usuarioId FROM fotos)
/*porque debe tener al menos una foto*/
ORDER BY totalPuntos DESC
LIMIT 10
Gracias nuevamente!!!
Saludos.