gpt4 book ai didi

mysql - 如何显示所有测验、学生的分数以及他们是否参加了 4 个表格中的测验

转载 作者:行者123 更新时间:2023-11-30 23:34:54 25 4
gpt4 key购买 nike

我有以下 4 个表:

Teacher: id, teacher

Student: id, student

Quiz: id, teacher_id, answer, dis_1, dis_2, dis_3

Intermediate: id, student_id, teacher_id, score

教师创建测验,学生进行测验。中间表使用相关 ID 跟踪测验的分数。

我想退回所有测验并指出学生的分数或他们没有参加。

如果他们还没有参加测验,那么中级表将没有该学生的条目。如果他们参加了测验,那么中级表将有分数。

到目前为止,这是我的声明:

SELECT Quiz.question as question, 
Quiz.id as id, Quiz.title as title,
Quiz.teacher_id as teacher_id, Teacher.teacher as teacher,
Quiz.answer as answer, Quiz.dis_1 as dis1,
Quiz.dis_2 as dis2, Quiz.dis_3 as dis3,
Intermediate.score as score
FROM Teacher, Intermediate
RIGHT JOIN Quiz ON Quiz.id = Intermediate.quiz_id
RIGHT JOIN Student ON Student.id = Intermediate.student_id
WHERE Quiz.teacher_id = Teacher.id

当我尝试该陈述时,我得到了所有参加过的测验,并且它显示了刚刚参加过的人的分数。如果分数存在于中间表中,我希望它只显示分数。

最佳答案

你看起来很亲密。可能导致您出现问题的一件事是:

FROM Teacher, Intermediate

当您在不使用显式 INNER/RIGHT/LEFT JOIN 语法的情况下合并表时,通常会导致意外结果,尤其是对于外部连接。您可以阅读更多关于 MySQL JOINS 的信息这可能会在您前进时有所帮助。

您的选择中也没有学生的姓名,我添加了该姓名,以便您看到与分数相关联的人的姓名。如果您的学生没有参加测验,他们的姓名和分数将为 NULL,这是由于 LEFT OUTER JOIN 的工作方式(返回所有行左表,匹配行或右表的 NULL)

SELECT q.question, q.id, q.title, q.teacher_id, t.teacher
, q.answer, q.dis_1, q.dis_2, q.dis_3, s.student, i.score
FROM Quiz AS q
LEFT OUTER JOIN [Intermediate] AS i ON q.id = i.quiz_id
LEFT OUTER JOIN Teacher AS t ON i.teacher_id = t.teacher_id
LEFT OUTER JOIN Student AS s ON i.student_id = s.student_id

关于mysql - 如何显示所有测验、学生的分数以及他们是否参加了 4 个表格中的测验,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290518/

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