一对多 "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 个表连接在一起
我有老师、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 个表连接在一起