解決策の一定数に対してバッジを付与するためのテンプレートや標準クエリはありますか? 例えば、10件の投稿/質問に回答し、それらすべてが解決策としてマークされたとします。このバッジと、それぞれ対応する20、30、40件の解決策マークなどのバッジを取得します。
標準クエリを探してみましたが、見つかりませんでした。ここにカスタムクエリがいくつかあることはわかります。
よろしくお願いいたします。
解決策の一定数に対してバッジを付与するためのテンプレートや標準クエリはありますか? 例えば、10件の投稿/質問に回答し、それらすべてが解決策としてマークされたとします。このバッジと、それぞれ対応する20、30、40件の解決策マークなどのバッジを取得します。
標準クエリを探してみましたが、見つかりませんでした。ここにカスタムクエリがいくつかあることはわかります。
よろしくお願いいたします。
プラグインには、/admin/badges ページから有効にできるものがいくつかあります(HelpDesk と TechSupport)。ただし、適応したい場合は、クエリは次のとおりです。
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
)
@JammyDodgerさん、ありがとうございます。
もう少しお手伝いが必要かもしれません。ソリューションのセレクター/フィールドを特定するドキュメントはありますか?

問題ありません。
データエクスプローラーは、カスタムSQLバッジに追加する前にクエリを試すのに非常に役立ちます(ただし、データエクスプローラーのものはbackfill部分は不要です)。
ただし、上記の2番目のクエリには必要な情報がすべて含まれていると思います。ソリューションはpost_cutom_fieldテーブルにname列のis_accepted_answerとして保存されています。そして、その2番目のクエリは10個のソリューション(HAVING COUNT(*) > 9)に対してTechSupportバッジを付与するため、OPから必要なものについては、そのクエリをコピーして、下の数値を19、29、39などに変更するだけで済みます。