Я пытаюсь использовать локальную переменную, чтобы сохранить значение для счетчика пользователей, чтобы рассчитать соотношение между текущим счетчиком и значением предыдущего.Локальная переменная Mysql не обновляется
Я использую этот запрос:
SET @count = 0;
SELECT DATE_FORMAT(ual.time, "%M, %Y") as monthName,
@count as beforeCount,
count(DISTINCT ual.user_id)/@count as progress,
@count := count(DISTINCT ual.user_id) as afterCount
FROM user_activity_log ual
LEFT OUTER JOIN user u
ON u.gym = 22
LEFT OUTER JOIN (SELECT ualWeek.user_id FROM user_activity_log ualWeek
GROUP BY FROM_DAYS(TO_DAYS(ualWeek.time) -MOD(TO_DAYS(ualWeek.time) -1, 7)), ualWeek.user_id
HAVING count(ualWeek.user_id) > 1) weekUsers
ON u.id = weekUsers.user_id
LEFT OUTER JOIN (SELECT ualMonth.user_id FROM user_activity_log ualMonth
GROUP BY DATE(DATE_FORMAT(ualMonth.time, "%Y-%m-01")), ualMonth.user_id
HAVING count(ualMonth.user_id) > 5) monthUsers
ON u.id = monthUsers.user_id
WHERE
(ual.user_id = weekUsers.user_id OR ual.user_id = monthUsers.user_id) AND
((ual.time BETWEEN '2014-02-13' AND '2015-02-13') OR (('2014-02-13' IS NULL) OR ('2015-02-13' IS NULL)))
GROUP BY DATE(DATE_FORMAT(ual.time, "%Y-%m-01"))
Моя проблема заключается в том, что @count
не обновляет себя. Это мой результат:
Если я отредактировав свой запрос и удалю мои присоединения, его рабочий режим прекрасен. Новый запрос:
SET @count = 0;
SELECT DATE_FORMAT(ual.time, "%M, %Y") as monthName,
@count as beforeCount,
count(DISTINCT ual.user_id)/@count as progress,
@count := count(DISTINCT ual.user_id) as afterCount
FROM user_activity_log ual
WHERE
((ual.time BETWEEN '2014-02-13' AND '2015-02-13') OR (('2014-02-13' IS NULL) OR ('2015-02-13' IS NULL)))
GROUP BY DATE(DATE_FORMAT(ual.time, "%Y-%m-01"))
- Мой вопрос почему это происходит и как я могу держать мои соединения и до сих пор мой
@counter
Так как я могу это решить? – dasdasd
Я видел, как вы редактировали, его все еще не работает. – dasdasd