استفسار عن شارة لكل مشاركة في موضوع جديد ضمن فئة؟

لدي شارة يمكن لأعضائي الحصول عليها عدة مرات، وهي شارة “نادي الكتاب” - تُمنح لهم لمناقشة كتاب الشهر.

كل شهر، يتم إنشاء موضوع جديد حول الكتاب التالي، ويجب على كل من يرد الحصول على الشارة - يتم ذلك حاليًا يدويًا وهو أمر مؤلم حقًا.

كنت أتساءل عما إذا كان بإمكان شخص ما مساعدتي في صياغة شارة SQL لحل هذه المشكلة.

يجب أن يحصل المستخدم على شارة واحدة كحد أقصى لكل موضوع، في المرة الأولى التي ينشر فيها في هذا الموضوع. إنها نفس الشارة في كل مرة، والتي يتم الحصول عليها عدة مرات.

هل هذا ممكن؟ شكرا!

إعجابَين (2)

هل يمكن لأحد المساعدة في هذا؟ أو هل يوجد دليل في أي مكان حول كيفية إنشاء Badge SQL؟

هل قرأت عبر https://meta.discourse.org/tag/sql-triggered-badge؟

نعم، لقد قرأت كل ذلك.

إنه أمر شاق بعض الشيء لمجرد تجربة شيء ما، حيث يمكن أن يؤدي استعلام SQL سيئ التكوين على موقع مباشر إلى نتائج سيئة للغاية.

هل هناك وضع اختبار أو أي شيء من هذا القبيل؟

أنا أستخدم خادم تجريبي للتجارب.

هل أحرزت أي تقدم إضافي في هذا الأمر؟

كيف يتم تحديد مواضيع نادي الكتاب؟ هل هي في فئة منفصلة، أم مجمعة حسب علامة؟

لا يوجد المزيد. لقد حيرتني عوامل المنح المتعددة.

جميع المواضيع في نفس الفئة. هذه الفئة مقفلة بحيث يمكن للموظفين فقط إنشاء مشاركات هناك، لذا من الآمن منح الإذن تلقائيًا لأي ردود في الفئة.

لكنني أريد أن:

  • منح شارة للرد الأول من كل شخص في كل موضوع، ولكن مرة واحدة فقط لكل موضوع
  • يمكن للمستخدم الحصول على عدة شارات متماثلة في كل مرة يرد فيها على موضوع مختلف من نفس الفئة

أعتقد أن شيئًا كهذا يمكن أن ينجح:

WITH book_club_first_posts AS (

SELECT 
    p.topic_id,
    p.user_id,
    MIN(p.id) AS post_id
FROM posts p
  JOIN topics t ON t.id = p.topic_id
WHERE t.category_id = 5  -- استبدل بـ category_id لنادي الكتاب الخاص بك
    AND p.deleted_at ISNULL
    AND t.deleted_at ISNULL
    AND p.post_type = 1
    AND p.post_number <> 1
    AND p.user_id > 0
GROUP BY p.topic_id, p.user_id

)

SELECT bcfp.user_id, bcfp.post_id, p.created_at granted_at
FROM book_club_first_posts bcfp
  JOIN posts p ON p.id = bcfp.post_id
WHERE (:backfill OR p.id IN (:post_ids))

إعجاب واحد (1)

سأجربها قريبًا شكرًا.

إعجاب واحد (1)

يعمل بشكل رائع، شكراً لك!!

إعجاب واحد (1)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.