获取每个学习小组的学生姓名的查询是什么?

What will be the query to get Student names for every individual study group?

会议 看起来像这样:

meeting_ID place
1 A
2 B
3 C

study_groups 看起来像这样:

study_group_id meeting_id (fk) topic
1 1 Basics
2 2 Photography
3 1 Film

students 看起来像这样:

student_id name
1 xyz
2 abc
2 pqr

group_members 看起来像这样:

study_group_id (fk) student_id (fk)
2 10
1 1
2 5
3 15
1 9
3 2
3 11

一个meeting有很多study_groups,每个study_groups有很多students

我想在 meeting_id = 1 的每个组中单独查找学生姓名。 在同一个查询中是否可以这样做?

如果不是我该怎么办,请建议我。

这是我现在的SQL查询:

SELECT
    study_groups.study_group_id,
    (SELECT COUNT(*)
     FROM group_members
     WHERE study_groups.study_group_id = group_members.study_group_id) AS no_of_students,
    study_groups.topic
FROM 
    study_groups
WHERE 
    study_groups.meeting_id = 1;

现在 table 看起来像:

study_group_id no_of_student topic
1 2 Basics
2 3 Photography

student_name 下面的列结果是 demo 但我想要这样的数据。

我期望的结果:

study_group_id no_of_student topic student_name
1 2 Basics xyz, abc, pqr
2 3 Photography abc, pqr

如果你想要学习组你正在使用Postgres的同学,你可以将他们聚合成一个数组:

SELECT sgs.study_group_id,
       (SELECT ARRAY_AGG(s.name)
        FROM group_members gm JOIN
             students s
             ON gm.student_id = s.student_id
        WHERE sg.study_group_id = gm.study_group_id
       ) AS student_names,
       sg.topic
FROM study_groups sg
WHERE sg.meeting_id = 1;