2016-12-15 3 views
0

Я пытаюсь обновить среднюю оценку, добавив к ней некоторое значение.Обновить значение avg в таблице

Моя таблица признанного студента содержит (NOSTUDENT, COURSECODE, SEMESTER, NOGROUPE, MARK) Колонны.

My View: AverageByGroupe содержит среднее значение баллов студентов, следующих за этим курсом, в соответствующем семестре.

CREATE OR REPLACE VIEW AverageByGroup AS 
SELECT COURSCODE, NOGROUPE, SEMESTER, AVG(MARK) AS AVGMARK 
FROM ADMITED_TABLE GROUP BY COURSECODE,NOGROUPE,SEMESTER; 

Вопрос: Я хочу, чтобы обновить среднюю оценку для данного курса, группы семестра по 10, но AVGMARK это внимание, столбец, то, что он правильный синтаксис UPDATE.

То, что я пробовал:

UPDATE ADMITED_TABLE 
SET AVG(MARK) = SELECT((AVG(MARK) + 10) 
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA' 
AND NOGROUP = 2 
AND SEMESTER = 'AUTMN'); 

Error: 
Error de command ligne: 2 Column: 8 
Rapport of error - 
Erreur SQL : ORA-00927: missing equal sign 
00927. 00000 - "missing equal sign" 
*Cause:  
*Action: 

Редактировать: Чтобы быть более ясным, что это таблица мутировать так, что я хочу использовать это ВМЕСТО ВСТАВИТЬ TRIGGER Wich огонь каждый раз, среднее значение оценивается путем корректировки этого курса.

Для выбора синтаксической ошибки, я включил выбрать в (

UPDATE ADMITED_TABLE 
SET AVG(MARK) = (SELECT (AVG(MARK) + 10) 
FROM ADMITED_TABLE WHERE COURSCODE = 'AAAA' 
AND NOGROUP = 2 
AND SEMESTER = 'AUTMN'); 

Ошибка:

ORA-00927: missing equal sign 
00927. 00000 - "missing equal sign" 
*Cause:  
*Action: 
+1

вы пытаетесь обновить среднее значение столбца в таблице, которая не является возможным. –

+0

У вас есть синтаксическая ошибка - в скобках должен быть выбран SELECT. Можете ли вы опубликовать, какую ошибку вы получите после фиксации? –

+1

Это невозможно, это представление, вы не можете напрямую изменить значение из этого представления, если только вы не напишите все выбранные столбцы в новую таблицу. Затем выполните следующий запрос, который я вам дал. (У вас также есть некоторые синтаксические ошибки в вашем запросе) – LONG

ответ

1

UPDATE NewADMITED_TABLE

SET AVGMARK = (AVGMARK + 10) - это не производный столбец больше

WHERE COURSCODE = 'AAAA'

AND NOGROUP = 2

AND SEMESTER = 'AUTMN

Смежные вопросы