SELECT
g.name group_name,
a.topic_id,
a.assigned_by_user_id,
a.created_at
FROM assignments a
INNER JOIN groups g ON g.id = a.assigned_to_id
WHERE assigned_to_type = 'Group'
ORDER BY g.name, created_at DESC
2. 토픽을 그룹에 할당한 이력 나열
SELECT
pcf.value AS group,
p.topic_id,
p.user_id AS "assigned_by_user_id",
pcf.created_at::date
FROM posts p
INNER JOIN post_custom_fields pcf ON pcf.post_id = p.id
WHERE action_code = 'assigned_group'
AND pcf.name = 'action_code_who'
ORDER BY pcf.value, pcf.created_at DESC
오늘 하루 종일 비슷한 쿼리를 짜고 있었는데(post_custom_fields 테이블을 발견했을 때 정말 놀랐습니다), 결국 yours가 훨씬 깔끔하네요.
토픽이 해제 후 재지정된 것이 아니라 바로 재지정된 경우 일부 항목이 누락되는 것을 발견하여, 이를 반영하기 위해 WHERE 조건을 조금 수정했습니다. 최종적으로 다음과 같이 정했습니다:
SELECT
pcf.value AS group,
p.topic_id,
p.user_id AS "assigned_by_user_id",
pcf.created_at::date
FROM posts p
INNER JOIN post_custom_fields pcf ON pcf.post_id = p.id
WHERE (action_code = 'assigned_group' OR action_code = 'reassigned_group')
AND pcf.name = 'action_code_who'
ORDER BY pcf.value, pcf.created_at DESC