Hallo, ich habe mich gefragt, ob es eine Vorlage oder eine Standardabfrage für die Vergabe von Abzeichen für eine bestimmte Anzahl von Lösungen gibt? Zum Beispiel antworte ich auf etwa 10 Beiträge/Fragen und alle werden als Lösungen markiert. Ich bekomme dafür ein Abzeichen und die entsprechenden Abzeichen für 20, 30, 40 usw. markierte Lösungen.
Ich habe versucht, nach den Standardabfragen zu suchen, aber sie scheinen nicht da zu sein. Ich sehe, dass hier einige benutzerdefinierte Abfragen geschrieben wurden.
Es gibt ein paar, die mit dem Plugin geliefert werden, die Sie von der Seite /admin/badges aus aktivieren können (HelpDesk und TechSupport). Aber hier sind die Abfragen, falls Sie sie anpassen möchten:
SELECT p.user_id, p.id post_id, p.updated_at granted_at
FROM badge_posts p
WHERE p.post_number > 1 AND
p.id IN (
SELECT post_id FROM (
SELECT pc.post_id, row_number()
OVER (PARTITION BY p1.user_id ORDER BY pc.created_at) as rnum
FROM post_custom_fields pc
JOIN badge_posts p1 ON p1.id = pc.post_id
JOIN topics t1 ON p1.topic_id = t1.id
WHERE name = 'is_accepted_answer' AND
p1.user_id <> t1.user_id AND
(
:backfill OR
p1.user_id IN (
select user_id from posts where p1.id IN (:post_ids)
)
)
) X WHERE rnum = 1)
SELECT id user_id, current_timestamp granted_at
FROM users
WHERE id IN (
SELECT p1.user_id
FROM post_custom_fields pc
JOIN badge_posts p1 ON p1.id = pc.post_id
JOIN topics t1 ON p1.topic_id = t1.id
WHERE p1.user_id <> t1.user_id AND
name = 'is_accepted_answer' AND
p1.user_id IN (
SELECT user_id
FROM posts
WHERE :backfill OR p1.id IN (:post_ids)
)
GROUP BY p1.user_id
HAVING COUNT(*) > 9
)
Kein Problem. Der Daten-Explorer eignet sich hervorragend zum Ausprobieren von Abfragen, bevor Sie sie als benutzerdefinierte SQL-Abzeichen hinzufügen (obwohl die Abfragen des Daten-Explorers den backfill-Teil nicht benötigen).
Ich denke jedoch, dass die zweite Abfrage oben alle benötigten Informationen enthält. Die Lösungen werden in der Tabelle post_cutom_field als is_accepted_answer in der Spalte name gespeichert. Und diese zweite Abfrage vergibt das TechSupport-Abzeichen für 10 Lösungen (HAVING COUNT(*) > 9), sodass Sie für die von Ihnen gewünschten Abfragen vom OP nur diese Abfrage kopieren und die untere Zahl auf 19, 29, 39 und so weiter ändern müssen.