Ho un badge che i miei membri possono guadagnare più volte, è un badge “Club del libro” - viene assegnato loro per aver discusso il libro del mese.
Ogni mese viene creato un nuovo argomento sul libro successivo e tutti coloro che rispondono dovrebbero ricevere il badge - questo viene attualmente fatto manualmente ed è un vero problema.
Mi chiedevo se qualcuno potesse aiutarmi a creare un Badge SQL per risolvere questo problema.
L’utente dovrebbe ricevere al massimo un badge per argomento, la prima volta che pubblica in quell’argomento. È lo stesso badge ogni volta, che viene guadagnato più volte.
Non vado oltre. Sono bloccato dal fattore di concessione multipla.
Tutti gli argomenti sono nella stessa categoria. Quella categoria è bloccata in modo che solo lo staff possa creare post lì, quindi è sicuro concedere automaticamente a qualsiasi risposta nella categoria.
Ma voglio che:
Conceda un badge per la prima risposta di ogni persona in ogni argomento, ma solo una volta per argomento
Un utente può ottenere più volte lo stesso badge ogni volta che risponde a un argomento diverso della stessa categoria
Penso che qualcosa del genere potrebbe funzionare:
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 -- replace with the category_id of your book club
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))