Как фильтровать темы по группе пользователей

Похоже, вам нужно что-то немного другое. :slight_smile: Каждый форум немного отличается, поэтому решения могут потребовать адаптации, но я бы описал вашу задачу как «темы, созданные пользователями из группы «client», без ответов от пользователей из группы «team»». Если это так, то вы можете адаптировать этот запрос, указав правильные 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 вашей группы «team»
  AND post_number <> 1
  AND deleted_at IS NULL
  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 вашей группы «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 IS NULL
  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)

Также вам нужно будет обновить страницу в первый раз после копирования и вставки запросов в ваш Data Explorer, чтобы появились поля ввода параметров. :+1: