SQL 多对多从一个 table 获取全部
SQL many-to-many get all from a table
我有三个表:
- 用户
id
some_user_data
some_more_user_data
1
...
...
2
...
...
3
...
...
- 教室
id
some_classroom_data
some_more_classroom_data
1
...
...
2
...
...
3
...
...
- classroom_users
id
user_id
classroom_id
1
1
1
2
1
3
3
2
1
4
3
1
5
3
2
我需要一个查询,给定一个 user_id,可以获取特定用户所在的所有教室的所有数据。因此,如果我 运行 上面给出的表的查询user_id 的 1,我想得到以下结果:
id
some_classroom_data
some_more_classroom_data
1
...
...
3
...
...
在此先感谢您的帮助。我一直在努力思考这个 SQL 查询太久了。
仅供参考,我正在使用 Postgres。
这应该有帮助
select c.* from classroom_users cu, classrooms c
where cu.user_id = <input user id> and cu.classroom_id = c.id;
我有三个表:
- 用户
id | some_user_data | some_more_user_data |
---|---|---|
1 | ... | ... |
2 | ... | ... |
3 | ... | ... |
- 教室
id | some_classroom_data | some_more_classroom_data |
---|---|---|
1 | ... | ... |
2 | ... | ... |
3 | ... | ... |
- classroom_users
id | user_id | classroom_id |
---|---|---|
1 | 1 | 1 |
2 | 1 | 3 |
3 | 2 | 1 |
4 | 3 | 1 |
5 | 3 | 2 |
我需要一个查询,给定一个 user_id,可以获取特定用户所在的所有教室的所有数据。因此,如果我 运行 上面给出的表的查询user_id 的 1,我想得到以下结果:
id | some_classroom_data | some_more_classroom_data |
---|---|---|
1 | ... | ... |
3 | ... | ... |
在此先感谢您的帮助。我一直在努力思考这个 SQL 查询太久了。
仅供参考,我正在使用 Postgres。
这应该有帮助
select c.* from classroom_users cu, classrooms c
where cu.user_id = <input user id> and cu.classroom_id = c.id;