لدي شارة يمكن لأعضائي الحصول عليها عدة مرات، وهي شارة “نادي الكتاب” - تُمنح لهم لمناقشة كتاب الشهر.
كل شهر، يتم إنشاء موضوع جديد حول الكتاب التالي، ويجب على كل من يرد الحصول على الشارة - يتم ذلك حاليًا يدويًا وهو أمر مؤلم حقًا.
كنت أتساءل عما إذا كان بإمكان شخص ما مساعدتي في صياغة شارة 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))