Есть три таблицы. В одной хранится информация о пользователях, в двух других - рейтинги топиков и комментов. Нужно вывести топ 10 пользователей, с наибольшей суммой рейтинга за комменты и посты за прошедную неделю. Пробую так:
SELECT user.user_id, SUM(topic.topic_rating + comment.comment_rating) as sum FROM tb_user as user
JOIN tb_topic as topic ON user.user_id = topic.user_id AND topic.topic_date_add > NOW() - INTERVAL 7 DAY
JOIN tb_comment as comment ON user.user_id = comment.user_id AND comment.comment_date > NOW() - INTERVAL 7 DAY
GROUP BY user.user_id LIMIT 10
Но в итоге получается просто неоправданно гиганская сумма (от нескольких тысяч). Если убрать один из JOIN, сумма получается правдивой. Я так понимаю, что проблема в слишком частых повторениях из-за второго JOIN'a. Можно ли как-нибудь составить запрос таким образом, чтобы обойтись одним SELECT'ом, и получить истинное значение суммы?