Ich habe ein Abzeichen, das meine Mitglieder mehrmals verdienen können. Es ist ein „Buchclub“-Abzeichen – sie erhalten es für die Diskussion des Buches des Monats.
Jeden Monat wird ein neues Thema für das nächste Buch erstellt, und jeder, der antwortet, sollte das Abzeichen erhalten – dies geschieht derzeit manuell und ist eine echte Qual.
Ich habe mich gefragt, ob mir jemand helfen kann, ein Badge SQL zu erstellen, um dies zu beheben.
Der Benutzer sollte maximal ein Abzeichen pro Thema erhalten, wenn er zum ersten Mal in diesem Thema postet. Es ist jedes Mal dasselbe Abzeichen, das mehrmals verdient wird.
Ich bin mit dem multiplen Vergabe-Faktor überfragt.
Alle Themen sind in derselben Kategorie. Diese Kategorie ist gesperrt, sodass nur Mitarbeiter dort Beiträge erstellen können. Daher ist es sicher, allen Antworten in der Kategorie automatisch eine Auszeichnung zu gewähren.
Aber ich möchte, dass es:
Eine Auszeichnung für die erste Antwort jeder Person in jedem Thema gewährt, aber nur einmal pro Thema.
Ein Benutzer kann dieselbe Auszeichnung mehrmals erhalten, jedes Mal, wenn er auf ein anderes Thema derselben Kategorie antwortet.
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 -- ersetze dies durch die category_id deines Buchclubs
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))