Почему область действия предложения with не распространяется на предложение where оператора update? - PullRequest
0 голосов
/ 07 ноября 2019

Я получаю сообщение об ошибке «Не удалось связать многокомпонентный идентификатор« T.stdID ».»для следующего запроса t-sql.

Если обновление заменено на select ... from ..., где T.stdID = ..., T.stdID ограничен без проблем;однако, это не ограничено тем, где часть обновления!

with T as
(select ID as stdID, sum(credits) as crd
from takes, course
where takes.course_id = course.course_id
group by ID)
update student
set 
    tot_cred = T.crd
where
    student.ID = T.stdID

Сообщение 4104, Уровень 16, Состояние 1, Строка 125 Не удалось связать идентификатор из нескольких частей "T.stdID".

Время завершения: 2019-11-06T19: 37: 49.3354478 + 02: 00

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019
with T as
  (select ID as stdID, sum(credits) as crd
   from takes
   inner join course
   on takes.course_id = course.course_id
   group by ID)
update student
set 
    tot_cred = T.crd
from student
inner join T
on student.ID = T.stdID
0 голосов
/ 07 ноября 2019
with T as
(select ID as stdID, sum(credits) as crd
from takes, course
where takes.course_id = course.course_id
group by ID)
update student
set 
    tot_cred = T.crd

from
    student, T

where
    student.ID = T.stdID

Большое спасибо @Sean Lange!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...