Обновление столбцов таблицы внешнего ключа - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь обновить столбец таблицы, используя данные (первичный ключ) другой таблицы. Человек, создавший базу данных, добавил таблицу «Сведения», в которой все идентификаторы были добавлены в каждую строку, даже несмотря на то, что идентификаторы были связаны, поэтому фактически для получения всех остальных идентификаторов требовался только один идентификатор. Таблица «Подробности» выглядит так:

RecordID    int
DepartmentID    int
ProjectID   int
FunctionID  int
TaskID  int
OwnerID int

Однако в таблице «Отдел» уже есть столбец ProjectID; таблица «Project» имеет столбец FunctionID и т. д. Таким образом, для доступа ко всем другим идентификаторам требуется только OwnerID в этой таблице; остальные излишни.

В таблице «Функция» есть столбец «ProjectID», который мне нужно заполнить. Когда я бегу:

select distinct(functionid), ProjectID from Detail order by FunctionID, ProjectID;

Я получаю:

FunctionID    ProjectID
1             5
10            9
11            1
12            1
13            8
14            10
15            8
16            8
17            1
...           ...

Мне нужна вторая часть:

update functions set projectid = (select ProjectID from Detail where FunctionID=?) 

Мне нужно закончить таблицу «Function», в которой есть эти идентификаторы проекта.

1 Ответ

0 голосов
/ 19 сентября 2018

SQL Server поддерживает join в операторах обновления, поэтому все, что вам нужно, это внутреннее соединение:

UPDATE f
SET projectId = d.ProjectId
FROM functions As f
JOIN Detail As d 
    ON f.FunctionId = d.FunctionId
...