Я пытаюсь получить общее количество баллов у пользователя, а также баллы за текущий месяц. Когда пользователь получает точку, он регистрируется в таблице точек с отметкой времени. Итоги игнорируют временную метку, а точки текущего месяца ищут точки с правильной временной меткой (с первого дня месяца).
SELECT user_id, user_name, sum(tpoints.point_points) as total_points, sum(mpoints.point_points) as month_points
FROM users
LEFT JOIN points tpoints
ON users.user_id = tpoints.point_userid
LEFT JOIN points mpoints
ON (users.user_id = mpoints.point_userid AND mpoints.point_date > '$this_month')
WHERE user_id = 1
GROUP BY user_id
структура таблицы точек
CREATE TABLE IF NOT EXISTS `points` (
`point_userid` int(11) NOT NULL,
`point_points` int(11) NOT NULL,
`point_date` int(11) NOT NULL,
KEY `point_userid` (`point_userid`),
KEY `point_date` (`point_date`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
В результате получается очень большое число, равное сумме всех точек, умноженной на количество строк, соответствующих запросу.
Мне нужно добиться этого без использования подзапросов или нескольких запросов.