这听起来你需要一些不同的东西。
每个论坛都略有不同,因此解决方案可能需要调整,但我会将此简报描述为“由“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) -- 你“team”组的 group_id
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) -- 你“client”组的 group_id
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)
而且,你还需要第一次复制粘贴查询到你的数据浏览器中来刷新页面,以加载参数输入框。 ![]()