Consulta de emblema para cada postagem em um novo tópico em uma categoria?

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.

Isso é possível? Obrigado!

2 curtidas

Alguém pode me ajudar com isso? Ou existe algum guia sobre como criar Badge SQL?

Você leu Topics tagged sql-triggered-badge?

Sim, já li tudo isso.

É um pouco assustador tentar algo como uma consulta SQL mal formulada em um site ativo, pois isso pode dar muito errado.

Existe um modo de teste ou algo assim?

Eu uso um servidor de homologação para experimentos.

Você obteve mais algum progresso com isso?

Como os tópicos do clube do livro são definidos? Eles estão em uma categoria separada ou agrupados por uma tag?

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

Eu acho que algo assim poderia funcionar:

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))

1 curtida

Vou tentar em breve, obrigado.

1 curtida

Funciona muito bem, obrigado!!

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.