Tenho um distintivo que meus membros podem ganhar várias vezes, é um distintivo de "Clube do Livro" - eles o recebem por discutir o livro do mês.
Todo mês, um novo tópico é criado sobre o próximo livro, e todos que responderem devem receber o distintivo - isso atualmente é feito manualmente e é uma grande dor de cabeça.
Eu estava me perguntando se alguém poderia me ajudar a criar um SQL de Distintivo para corrigir isso.
O usuário deve receber no máximo um distintivo por tópico, na primeira vez que postar naquele tópico. É o mesmo distintivo de sempre, que é ganho várias vezes.
Não mais. Estou perplexo com o fator de concessão múltipla.
Todos os tópicos estão na mesma categoria. Essa categoria está bloqueada para que apenas a equipe possa criar postagens lá, então é seguro conceder automaticamente a qualquer resposta na categoria.
Mas eu quero que ele:
Conceda um distintivo para a primeira resposta de cada pessoa em cada tópico, mas apenas uma vez por tópico
Um usuário pode obter várias vezes o mesmo distintivo cada vez que ele postar uma resposta em um tópico diferente da mesma categoria
WITH book_club_first_posts AS (
SELECT
p.topic_id,
p.user_id,
MIN(p.id) AS post_id
FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE t.category_id = 5 -- substitua pelo category_id do seu clube do livro
AND p.deleted_at ISNULL
AND t.deleted_at ISNULL
AND p.post_type = 1
AND p.post_number <> 1
AND p.user_id > 0
GROUP BY p.topic_id, p.user_id
)
SELECT bcfp.user_id, bcfp.post_id, p.created_at granted_at
FROM book_club_first_posts bcfp
JOIN posts p ON p.id = bcfp.post_id
WHERE (:backfill OR p.id IN (:post_ids))