一对多 "twice" 在一个 sql 查询中(或以一种有效的方式)

One to many "twice" in one sql query (or in an efficient way)

我有老师、class老师和学生。我的 table classes 有一个指向老师的外键,学生有一个指向 class 的外键(一个老师有很多 classes,每个 class有很多学生)。我的目标是从一位老师那里得到所有 classes 和所有学生,返回 json 这样的:

[
 {
  "class_id":1,
  "name":"Class One",
  "students":[
   {
    "student_id":1,
    "name":"Student One"
   },
   {
    "student_id":2,
    "name":"Student Two"
   }
  ]
 },
 {
  "class_id":2,
  "name":"Class Two",
  "students":[
   {
    "student_id":3,
    "name":"Student Three"
   },
   {
    "student_id":4,
    "name":"Student Four"
   }
  ]
 }
]

我唯一想到的是进行一次查询以从一位老师那里获取所有 classes,然后在 classes 中迭代此结果并对每个查询进行查询以得到它的学生(但这听起来很低效)。

我有什么选择?

只需在单个 SQL 查询中将 3 个表连接在一起