Isso parece que você precisa de algo um pouco diferente.
Cada fórum é ligeiramente diferente, então as soluções podem precisar ser adaptadas, mas eu descreveria este resumo como “tópicos criados por usuários no grupo ‘cliente’, sem resposta de um usuário no grupo ‘equipe’”. Se for esse o caso, você pode adaptar esta consulta com os group_ids corretos e ela deve fazer o que você deseja:
-- [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 do seu grupo 'equipe'
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 do seu grupo 'cliente'
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
Isso funciona de forma mais suave se você souber os group_ids em vez de usar nomes de grupos. Você pode encontrá-los no JSON do grupo (por exemplo, /g/admins.json), embora você também possa usar algo como isso como uma consulta discreta:
-- [params]
-- string :group_name
SELECT name,
id
FROM groups
WHERE name LIKE LOWER (:group_name)
E você também precisará atualizar a página na primeira vez que copiar e colar as consultas em seu explorador de dados para que as caixas de entrada de parâmetros sejam exibidas. ![]()