Нормализация данных - PullRequest
0 голосов
/ 20 мая 2009

Мне нужно обновить поле managerid с помощью соответствующего employeeid.

CREATE TABLE Employee(
EmployeeID Int Primary Key Identity,
Name Varchar(50),
ManagerID INT default 0,
ManagerName Varchar(50) default ''
)
INSERT INTO Employee(Name,ManagerName) VALUES('Dilbert','Boss')
INSERT INTO Employee(Name,ManagerName) VALUES('Boss','Dogbert')
INSERT INTO Employee(Name) VALUES('Dogbert')
SELECT * FROM Employee
GO
-- This is the update stmt I need help with
UPDATE Employee 
SET ManagerID=EmpID
WHERE ManagerName = Name

1 Ответ

5 голосов
/ 20 мая 2009

Вы можете присоединиться к таблице Employee, чтобы найти идентификатор менеджера:

UPDATE emp
SET ManagerID = boss.EmployeeID
FROM Employee emp
INNER JOIN Employee boss
    ON boss.Name = emp.ManagerName

Имейте в виду, что хранение как имени менеджера, так и идентификатора менеджера в строке сотрудника нарушает 3-ю обычную форму .

...