我有一个表学生,我创建了列average_grades,我还有列

时间:2016-01-03 17:18:06

标签: sql oracle

我有一个表students,我创建了列average_grades,我还有一个表grades,其中包含G_id,g_grades,g_course,g_student,g_data列。

我想将所有平均成绩添加到students表格中的average_grades列,我的查询有相同的错误

insert into students (average_grades) 
    select avg(grades.g_grade) 
    from grades          

和我的错误

  

从第7行开始出错:在命令中插入7 - 插入学生(average_grades)从成绩中选择avg(grades.g_grade)

     

错误报告 - SQL错误:ORA-01400:невозможновставитьNULLв(“DB_141ADM036”。“学生”。“ST_ID”)01400。00000 - “无法将NULL插入(%s)”
  *原因:尝试将NULL插入先前列出的对象中   *操作:这些对象不能接受NULL值。

编辑:俄语翻译:

  

ORA-01400:无法插入NULL(“DB_141ADM036”。“学生”。“ST_ID”)

1 个答案:

答案 0 :(得分:0)

它似乎是你在学生表中插入新记录,并猜测学生表中还有更多列也需要提供。

insert into students (S_id,average_grades) 
    select XXX, avg(grades.g_grade)  // logic to get student ID
    from grades  

我猜如果你已经在学生表中插入记录,那么你需要更新average_grades列,如

Update students 
SET average_grades = ( select avg(grades.g_grade  from grades ) 
WHERE Student_Id = XXX