Comment filtrer les sujets par groupe d'utilisateurs

Cela semble indiquer que vous avez besoin de quelque chose d’un peu différent. :slight_smile: Chaque forum est légèrement différent, donc les solutions peuvent nécessiter des adaptations, mais je décrirais cette demande comme « sujets créés par des utilisateurs du groupe ‘client’, sans réponse d’un utilisateur du groupe ‘équipe’ ». Si tel est le cas, vous pourriez adapter cette requête avec les group_ids corrects et elle devrait faire ce que vous voulez :

-- [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 de votre groupe 'équipe'
  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 de votre groupe 'client'
  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

Cela fonctionne plus facilement si vous connaissez les group_ids plutôt que d’utiliser les noms de groupe. Vous pouvez les trouver dans le JSON du groupe (par exemple, /g/admins.json), bien que vous puissiez également utiliser quelque chose comme ceci pour une recherche rapide :


-- [params]
-- string :group_name

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

Et vous devrez également actualiser la page la toute première fois que vous copiez-collez les requêtes dans votre explorateur de données pour qu’il prenne en compte les champs de saisie des paramètres. :+1: