Cela semble indiquer que vous avez besoin de quelque chose d’un peu différent.
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. ![]()