当前位置: 首页 > 知识库问答 >
问题:

无重复查询

卫昊东
2023-03-14

我已经创建了三个表。一个是< 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

共有2个答案

丰博
2023-03-14

您的目标不是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
裴兴学
2023-03-14

如果您想要列出一个学生的所有分数,那么您可以使用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是从哪里来的?当我输入上