Как обновить таблицу с полями, выбранными из другой таблицы? - PullRequest
1 голос
/ 20 июня 2011

Хотя есть много вопросов, подобных этому, таких как " Обновление записи из другой таблицы ", но я не могу заставить это работать.

У меня есть запрос, который выбирает и обновляет таблицу sem_stdexamfinresmark. Подзапрос select возвращает несколько строк данных, размер которых может быть не равен обновляемой таблице, но обновление теперь работает.

Запрос выглядит так:

update  sem_stdexamfinresmark sr,
    (select 
         se.currsession,
         str.studentid,
         str.classid,
         str.subjectid,
         str.aggScore*(select gbtp.percentage from gb_termpercentage gbtp where gbtp.termname = se.examtype)/100 as aggPer,
         str.aggGrade
    from 
        sem_stdexamtermresr str,
        sem_exam se 
    where 
        str.examid=se.examid and 
        se.examtype = 'Second Term' and
        se.currsession =1 and classid='8' 
     ) s
     set 
        sr.SecondTermMark = s.aggPer and
        sr.SecondTermGrade = s.aggGrade 
     where
        sr.studentid=s.studentid and 
        sr.subjectid=s.subjectid and 
        s.currsession = s.currsession and
        sr.classid='8';

EDIT:

update  sem_stdexamfinresmark 
 set 
    sr.SecondTermMark = s.aggPer and
    sr.SecondTermGrade = s.aggGrade 
from 
(select 
     se.currsession,
     str.studentid,
     str.classid,
     str.subjectid,
     str.aggScore*(select gbtp.percentage from gb_termpercentage gbtp where gbtp.termname = se.examtype)/100 as aggPer,
     str.aggGrade
from 
    sem_stdexamtermresr str,
    sem_exam se 
where 
    str.examid=se.examid and 
    se.examtype = 'Second Term' and
    se.currsession = 1 and classid='8' 
 ) s
 where
    sr.studentid=s.studentid and 
    sr.subjectid=s.subjectid and 
    s.currsession =1 and
    sr.classid='8';
    select * from sem_exam;
    update sem_exam set currsession =1;

Ответы [ 2 ]

0 голосов
/ 23 июня 2011

Вот что происходит, когда кто-то теряет сон :( Я просто сделал глупую ошибку здесь и добавил "и"

0 голосов
/ 20 июня 2011

попробуйте что-то похожее на:

update foo
set col = bar.col
from bar
where ...
...