海底抓鱼 2024-05-23 21:16 采纳率: 71.4%
浏览 2

数据库新建视图的问题

新建视图的时候为什么会报错啊?gradID和gradname都在student表里

img

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-23 21:16
    关注

    引自免费微信小程序:皆我百晓生

    在创建视图V_StuSelectCourse时,您遇到了一个错误,即消息8120,这通常是因为在聚合查询(如AVG()SUM())中,选择了未在GROUP BY子句中包含的非聚合列。在这个情况下,问题出在S.GradIDS.GradName这两列上。

    为了解决这个问题,您需要在SELECT语句中添加GROUP BY子句,并将所有非聚合列包含其中。考虑到您的需求是按学生ID和姓名分组并计算平均成绩和总学分,可以这样修改您的视图定义:

    CREATE VIEW V_StuSelectCourse
    (
        ID, 
        Name, 
        Gavg, 
        TotalCredit
    )
    AS
    SELECT 
        S.GradID,
        S.GradName,
        AVG(SC.score),
        SUM(C.Credit)
    FROM 
        TB_Course_Info C
    JOIN 
        TB_Student_Info S ON SC.CourseID = C.CourseID
    JOIN 
        TB_Select_Course sC ON SC.GradID = S.GradID
    GROUP BY 
        S.GradID,
        S.GradName;
    

    这个修正后的CREATE VIEW语句包含了GROUP BY S.GradID, S.GradName,这意味着结果集会根据学生的ID和姓名进行分组,然后对每个组应用AVG(SC.score)SUM(C.Credit)操作。这样就解决了错误消息8120,并且应该能正确地创建视图了。记得运行这个SQL命令后,刷新您的视图以查看新创建的视图V_StuSelectCourse

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月23日