Можно ли выдавать бейдж пользователю, создавшему тему, которая получила много ответов? Например, 100 ответов?
Я бы назвал его «Популярная тема», и это мотивировало бы людей придумывать новые идеи для тем, которые вызовут активное обсуждение.
Можно ли выдавать бейдж пользователю, создавшему тему, которая получила много ответов? Например, 100 ответов?
Я бы назвал его «Популярная тема», и это мотивировало бы людей придумывать новые идеи для тем, которые вызовут активное обсуждение.
Я думаю, что простой вариант мог бы выглядеть примерно так:
SELECT
t.user_id,
CURRENT_TIMESTAMP AS granted_at,
p.id AS post_id
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE t.posts_count >= 100
AND t.archetype = 'regular'
AND t.deleted_at IS NULL
AND t.user_id > 0
Использование t.post_counts в настоящее время также включает небольшие посты с действиями (закрытые, скрытые и т. д.), поэтому всё зависит от того, насколько точным вы хотите сделать это.
Можно сделать это более специфичным, подсчитав «подходящие» посты непосредственно внутри запроса. Например:
SELECT
t.user_id,
CURRENT_TIMESTAMP AS granted_at,
p.id AS post_id
FROM topics t
JOIN posts p ON p.topic_id = t.id AND p.post_number = 1
WHERE t.id IN (
SELECT
p.topic_id
FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE t.archetype = 'regular'
AND t.deleted_at IS NULL
AND p.deleted_at IS NULL
AND p.post_number <> 1
AND p.post_type = 1
AND p.hidden IS FALSE
GROUP BY 1
HAVING COUNT(*) >= 100
)
Это здорово, Jam!
ОП мог бы также изменить количество постов, добавив три уровня: бронза (50), серебро (100) и золото (200).
Спасибо за инструкцию и спасибо @Shauny за идею.
Спасибо, я попробую и вернусь к вам с ответом!
Я настроил это сейчас, но, кажется, его следует установить на ежедневное обновление? Посмотрю завтра, сработало ли это. Нужно ли отмечать «цели посты»?
Отлично сработало, спасибо!!