我已经创建了三个表。一个是< code >期中,另一个是< code >期末,最后一个是< code >成绩。
它们中的每一个都有列:学生ID、学生姓名、分数、课程ID。
这意味着所有表格中都有相同的学生,ID相同,但分数不同。我想从所有三个表中检索、查询Student_ID、Student_Name和Scores。但当我这样做的时候,会有很多重复。一个学生可以有一个ID,但有许多课程,所以有许多课程ID,这意味着他可以有多个分数。
如何为它编写查询?
SELECT dbo.FinalTerm.Student_ID, dbo.FinalTerm.Student_Name, dbo.FinalTerm.Score, dbo.Results.Score AS Expr1, dbo.Results.Course_ID,
dbo.MidTerm.Score AS Expr2, dbo.MidTerm.Course_ID AS Expr3, dbo.FinalTerm.Course_ID AS Expr4
FROM dbo.FinalTerm INNER JOIN
dbo.Results ON dbo.FinalTerm.ID = dbo.Results.ID INNER JOIN
dbo.MidTerm ON dbo.Results.Student_ID = dbo.MidTerm.Student_ID
您的目标不是100%明确,而只是我对您正在寻找什么的猜测:
SELECT
dbo.FinalTerm.Student_ID,
dbo.FinalTerm.Student_Name,
dbo.FinalTerm.Course_ID,
SUM(dbo.FinalTerm.Score) as FinalScore,
SUM(dbo.Results.Score) AS ResultsScore,
SUM(dbo.MidTerm.Score) AS MidTermScore
FROM
dbo.FinalTerm
LEFT JOIN dbo.Results
ON dbo.FinalTerm.Student_ID = dbo.Results.Student_ID
AND dbo.FinalTerm.Course_ID = dbo.Results.Course_ID
LEFT JOIN dbo.MidTerm
ON dbo.FinalTerm.Student_ID = dbo.MidTerm.Student_ID
AND dbo.FinalTerm.Course_ID = dbo.MidTerm.Course_ID
GROUP BY dbo.FinalTerm.Student_ID, dbo.FinalTerm.Course_ID
如果您想要列出一个学生的所有分数,那么您可以使用GROUP_CONCAT
SELECT
m.Student_ID, m.Student_Name, GROUP_CONCAT(m.Score,' ',f.Score,' ',r.Score)
FROM
MidTerm m
inner join FinalTerm f on m.Student_ID = f.Student_ID
inner join Results r on f.Student_ID = r.Student_ID
GROUP BY
Student_ID, Student_Name;
此外,您可能不应该在所有表中保留student_name。更好的方法是创建一个学生表,保存所有学生的详细信息,只在其他表中保留student_id来引用学生表
我在用猫鼬。我正在执行查找查询,但无法修改查询结果。
我有下面的列在我的熊猫数据帧 我想过滤掉Loan和Loan记录Loan
主要内容:示例在本教程中,主要从设计视图创建了各种选择查询。 但在Access中,可以使用一些特殊的查询向导来创建几个特定的查询。 第一个是“查找重复查询”向导。查找重复查询向导将创建一个查询,在单个表或查询中查找具有重复字段值的记录。 正如我们所讨论的,关系数据库的设计是为了避免存储重复的信息。 但是,尽管这样的设计,有时用户不小心输入重复的信息。 示例 在客户的表格中,可以让同一个客户不小心添加两次。 在这
调试栏读取 事实证明,每次检查我的用户,通过
我正在学习一门在线编码课程,该课程导入了appstore上应用程序的大量数据,并要求我们计算出游戏或社交网络应用程序的平均评分。执行此操作时,我意外地键入了if语句,如上图所示: 这是我不明白的,总共有7197个应用程序,如果我使用上面的if语句,我的games\u social\u评级列表的长度是7197。游戏应用程序总数为3862,社交网络应用程序总数为167。7197是从哪里来的?当我输入上