Unsere Community konzentriert sich auf angepinnte und global angepinnte Themen. Leider gibt es auf den Benutzerprofilseiten überhaupt keine Statistik dazu, und es scheint, dass Pinnungen bzw. globale Pinnungen nirgendwo systematisch in der Datenbank gespeichert werden.
Angesichts dessen suche ich nach einer Möglichkeit, mindestens folgende Abzeichen zu vergeben: „Erstes angepinntes Thema“, „10 angepinnte Themen“, „100 angepinnte Themen“ sowie für global angepinnte Themen.
Könnte mir jemand bitte mit dem SQL-Code für diese Art von Abzeichen helfen?
Mein Ausgangspunkt:
SELECT p.user_id, min(p.created_at) granted_at, MIN(p.id) post_id
FROM badge_posts p
JOIN topics t ON t.id = p.topic_id
WHERE t.unpinned IS NOT NULL
GROUP BY p.user_id
HAVING count(*) > 5
Dabei erhalte ich jedoch den Fehler:
ERROR: column t.unpinned does not exist
LINE 6: WHERE t.unpinned IS NOT NULL
Ich vermute, ich muss mich auf unpinned stützen, da es meines Wissens nach keinen anderen Datenpunkt gibt, der mit Themen verknüpft ist, die einmal angepinnt waren. Oder könnte ich stattdessen eventuell post_actions verwenden?
Oder sollte ich vielleicht nach dem ersten Beitrag in einem Thema suchen, der von einem Staff-/System-Benutzer erstellt wurde und „pinned … ago“ enthält, um dies zu zählen? action_code => pinned.disabled
Update: Dies scheint irgendwie zu funktionieren…
SELECT t.user_id, current_timestamp granted_at
FROM badge_posts p
INNER JOIN topics t on t.id = p.topic_id
WHERE p.action_code ilike 'pinned.disabled'
GROUP BY t.user_id
HAVING count(*) > 0
Ich bin mir jedoch nicht sicher, ob dies der beste Ansatz ist. Da ein Beitrag mehrmals angepinnt und wieder entspint werden kann, bin ich unsicher, ob diese Abfrage wirklich nur EIN pinned.disabled pro topic.id erfasst.
Hilfe von einem SQL-Zauberer für Abzeichen wäre sehr willkommen.
Alternativ könnte man auch darüber nachdenken, Pinnungen zukünftig systematisch in der Datenbank zu speichern – ähnlich wie bei „Likes“ – und sie im Statistik-Bereich des Benutzerprofils anzuzeigen, ergänzt durch Links wie „ANGEPINNT“. Denn wenn ein Thema angepinnt wird, ist dies eine deutlich höhere Wertschätzung im Vergleich zu Likes und sollte entsprechend berücksichtigt werden.
