ユーザーグループでトピックをフィルタリングする方法

もしフォーラムにData Explorerプラグインがインストールされていれば、Discourseデータベースからこの情報を取得するためにSQLクエリを記述できます。このクエリは、トピックのIDとタイトル、そしてトピックの最後の投稿のユーザーIDを取得しようとします。最後の投稿が「clients」グループのユーザーによって行われたトピックのみを選択します。

これはあくまで一例です。

SELECT 
    t.id AS topic_id, 
    t.title AS topic_title, 
    (SELECT user_id FROM posts WHERE topic_id = t.id ORDER BY created_at DESC LIMIT 1) AS last_post_user_id
FROM 
    topics t
JOIN
    posts p ON p.topic_id = t.id
JOIN 
    group_users gu ON gu.user_id = p.user_id
JOIN 
    groups g ON g.id = gu.group_id
WHERE 
    g.name = 'clients'
GROUP BY 
    t.id
HAVING 
    MAX(p.user_id) = last_post_user_id
ORDER BY 
    MAX(p.created_at) DESC
「いいね!」 1