gpt4 book ai didi

mysql - 在这种情况下如何做加入策略?

转载 作者:行者123 更新时间:2023-12-02 02:39:39 25 4
gpt4 key购买 nike

这是我正在处理的情况:

我有 4 个表:

用户表:

+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
| 3 | name3 |
+----+-------+

分配表:

+----+-----------------+
| id | assignment_name |
+----+-----------------+
| 11 | name1 |
| 12 | name2 |
| 13 | name3 |
+----+-----------------+

提交:

+----+---------------+---------+
| id | assignment_id | user_id |
+----+---------------+---------+
| 1 | 11 | 3 |
| 2 | 12 | 1 |
| 3 | 11 | 2 |
+----+---------------+---------+

群组提交

+----+----------------+---------+
| id | submission_id | user_id |
+----+----------------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 3 | 1 |
+----+----------------+---------+

提交表有一个 assignment_id 来告诉提交属于哪个分配。

用户也可以提交群组提交,提交的人进入提交表,而其他人进入 group_submissions 表。这样一来,它将被计为一次提交,而不是基于组中有多少人的 2,3...N 次提交。

如何获取已提交提交或已参与给定作业中的组提交的用户?

结果应根据分配 ID 返回提交表或 group_submissions 表中的一个或多个用户

结果应该是这样的:

+----+-------+
| id | name |
+----+-------+
| 1 | name1 |
| 2 | name2 |
+----+-------+

它基本上应该返回用户表。

这是我到目前为止尝试过的:

这只给我不在提交表中但在 group_submission 中的用户

select * from users u
right join group_submissions gs on u.id = gs.student_id
right join assignment_submissions ass on gs.submission_id = ass.id
inner join assignments a on a.id = ass.assignment_id
where a.id = number

这只会给我一个提交的用户(在提交表中)

select * from users u
right join assignment_submissions ass on u.id= ass.student_id
right join group_submissions gs on ass.id = gs.submission_id
inner join assignments a on a.id = ass.assignment_id
where a.id = number

我的加入策略应该是什么?或者在这里加入不是正确的选择。

注意:这是一个 MySQL 数据库。

最佳答案

你可以使用exists:

select u.*
from users u
where
exists (
select 1
from submissions s
where s.user_id = u.id and s.assignment_id = ?
)
or exists (
select 1
from group_submissions gs
inner join submissions s on s.id = gs.submission_id
where gs.user_id = u.id and s.assignment_id = ?
)

关于mysql - 在这种情况下如何做加入策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60600237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com