Badge-Abfrage für jedes Posten eines neuen Themas in einer Kategorie?

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.

Ist das möglich? Danke!

2 „Gefällt mir“

Kann mir jemand dabei helfen? Oder gibt es irgendwo eine Anleitung, wie man Badge SQL erstellt?

Hast du dir Topics tagged sql-triggered-badge durchgelesen?

Ja, ich habe das alles gelesen.

Es ist etwas entmutigend, einfach etwas auszuprobieren, da eine falsch formulierte SQL-Abfrage auf einer Live-Site sehr schiefgehen könnte.

Gibt es einen Testmodus oder so etwas?

Ich benutze einen Staging-Server für Experimente.

Sind Sie damit weitergekommen?

Wie werden die Buchclub-Themen definiert? Sind sie in einer separaten Kategorie oder nach einem Tag gruppiert?

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.

Ich glaube, so etwas könnte funktionieren:

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

1 „Gefällt mir“

Ich werde es bald versuchen, danke.

1 „Gefällt mir“

Funktioniert super, danke!!

1 „Gefällt mir“

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