嘿,我想知道是否有任何模板或标准查询用于奖励一定数量解决方案的徽章? 例如,我回复了大约 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
)
没关系。
数据浏览器非常适合在将查询添加为自定义 SQL 徽章之前进行尝试(尽管数据浏览器中的查询不需要 backfill 部分)。
不过我认为上面第二个查询已经包含了您需要的所有信息。解决方案保存在 post_cutom_field 表中,name 列的值为 is_accepted_answer。第二个查询授予了获得 10 个解决方案的 TechSupport 徽章(HAVING COUNT(*) > 9),所以对于您想要的 OP 中的那些,您只需复制该查询并将底部的数字更改为 19、29、39 等即可。