diff --git a/api/src/services/db/memberService.ts b/api/src/services/db/memberService.ts index 25be92e..3f80a83 100644 --- a/api/src/services/db/memberService.ts +++ b/api/src/services/db/memberService.ts @@ -184,25 +184,21 @@ export async function getAllMembersLite(): Promise { export async function getMembersFull(ids: number[]): Promise { const sql = ` - SELECT m.*, - COALESCE( - JSON_ARRAYAGG( - CASE - WHEN r.id IS NOT NULL THEN JSON_OBJECT( - 'id', r.id, - 'name', r.name, - 'color', r.color, - 'description', r.description - ) - END - ), - JSON_ARRAY() - ) AS roles + SELECT + m.*, + ( + SELECT COALESCE(JSON_ARRAYAGG(JSON_OBJECT( + 'id', r.id, + 'name', r.name, + 'color', r.color, + 'description', r.description + )), JSON_ARRAY()) + FROM members_roles mr + JOIN roles r ON mr.role_id = r.id + WHERE mr.member_id = m.member_id + ) AS roles FROM view_member_rank_unit_status_latest m - LEFT JOIN members_roles mr ON m.member_id = mr.member_id - LEFT JOIN roles r ON mr.role_id = r.id - WHERE m.member_id IN (?) - GROUP BY m.member_id; + WHERE m.member_id IN (?); `; const rows: any[] = await pool.query(sql, [ids]);