Мне нужно построить запрос для копирования информации в столбце из одной таблицы в столбец в другой таблице.
Вот как выглядят таблицы:
Люди:
PersonId | Name | StatusId |
---|---|---|
1 | John | |
2 | Jenny | |
3 | Steve |
Задания:
AssignmentId | Country | PersonId |
---|---|---|
1 | UK. | 1 |
2 | USA | 3 |
Статус:
StateId | Name |
---|---|
1 | Busy |
2 | Free |
Между таблицами «Люди» и «Назначения» существует связь: PersonId в таблице «Назначения» — это FK. Таблица People связана с таблицей Status через FK StatusId. Что мне нужно сделать, так это заполнить StatusId в таблице People с помощью StatusId из таблицы Status, если человек в таблице People существует в таблице Assignments. В приведенном выше примере и Джон, и Стив находятся в таблице «Назначения», в этом случае их StatusId в таблице «Люди» должен быть установлен на 1.
Я пытался сделать это с помощью этого:
update People
set StatusId = 1
where PersonId IN (
select PersonId
from Assignments
where Assignments.PersonId = People.PersonId
)
но, как вы можете видеть, я жестко кодирую StatusId, что не будет работать. Есть ли способ получить StatusId на основе результата выбора? Или есть другой способ получить StatusId?