مرحباً، كنت أتساءل عما إذا كان هناك أي قالب أو استعلام قياسي لمنح شارات لمقدار معين من الحلول؟ على سبيل المثال، أجيب على حوالي 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 كـ is_accepted_answer في عمود name. وهذا الاستعلام الثاني يمنح شارة TechSupport لـ 10 حلول (HAVING COUNT(*) > 9)، لذلك بالنسبة للحلول التي تريدها من OP، تحتاج فقط إلى نسخ هذا الاستعلام وتغيير الرقم السفلي إلى 19، 29، 39، وما إلى ذلك.