كيفية تصفية المواضيع حسب مجموعة المستخدمين

يبدو أنك بحاجة إلى شيء مختلف قليلاً. :slight_smile: كل منتدى مختلف قليلاً، لذا قد تحتاج الحلول إلى التكيف، ولكنني سأصف هذه الموجز بـ “المواضيع التي أنشأها المستخدمون في مجموعة ‘العميل’، دون رد من مستخدم في مجموعة ‘الفريق’”. إذا كان هذا هو الحال، فيمكنك تكييف هذا الاستعلام باستخدام group_ids الصحيحة ويجب أن يفعل ما تريده:

-- [params]
-- date :start_date = 01/01/2023
-- date :end_date = 01/06/2023

WITH team_replies AS (

SELECT topic_id
FROM posts
WHERE user_id IN (SELECT user_id FROM group_users WHERE group_id = 3) --group_id of your 'team' group
  AND post_number <> 1
  AND deleted_at ISNULL
  AND post_type = 1
GROUP BY topic_id
)


SELECT t.created_at::date,
       t.id AS topic_id,
       MIN(p.id) AS first_post_id
FROM topics t
JOIN posts p ON p.topic_id = t.id
WHERE t.user_id IN (SELECT user_id FROM group_users WHERE group_id = 45) -- group_id of your 'client' group
  AND t.id NOT IN (SELECT topic_id FROM team_replies)
  AND t.created_at BETWEEN :start_date AND :end_date
  AND t.deleted_at ISNULL
  AND t.archetype = 'regular'
GROUP BY t.id
ORDER BY 1 ASC

هذا يعمل بسلاسة أكبر إذا كنت تعرف group_ids بدلاً من استخدام أسماء المجموعات. يمكنك العثور عليها في JSON الخاص بالمجموعة (على سبيل المثال، /g/admins.json)، على الرغم من أنه يمكنك أيضًا استخدام شيء مثل هذا كبحث سريع:


-- [params]
-- string :group_name

SELECT name,
       id
FROM groups
WHERE name LIKE LOWER (:group_name)

وستحتاج أيضًا إلى تحديث الصفحة في المرة الأولى التي تنسخ فيها الاستعلامات إلى مستكشف البيانات الخاص بك لالتقاط مربعات إدخال المعلمات. :+1: