Themen nach Benutzergruppe filtern

Das klingt, als ob du etwas anderes brauchst. :slight_smile: Jedes Forum ist etwas anders, daher müssen Lösungen möglicherweise angepasst werden, aber ich würde diese Anforderung als „Themen, die von Benutzern in der Gruppe ‚Client‘ erstellt wurden und auf die kein Benutzer in der Gruppe ‚Team‘ geantwortet hat“ beschreiben. Wenn das der Fall ist, könntest du diese Abfrage mit den richtigen group_ids anpassen, und sie sollte das tun, was du möchtest:

-- [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 deiner 'team'-Gruppe
  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 deiner 'client'-Gruppe
  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

Dies funktioniert reibungsloser, wenn du die group_ids kennst, anstatt Gruppennamen zu verwenden. Du findest sie in der Gruppen-JSON (z. B. /g/admins.json), du kannst aber auch etwas wie das hier als schlaue Nachschlagefunktion verwenden:


-- [params]
-- string :group_name

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

Außerdem musst du die Seite beim ersten Kopieren und Einfügen der Abfragen in deinen Daten-Explorer aktualisieren, damit die Eingabefelder für die Parameter angezeigt werden. :+1: