2009-05-20 14 views
0

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 

答えて

5

あなたは管理者のIDを見つけるために、Employeeテーブルに参加することができます:

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

は、従業員の行にマネージャの名前とマネージャのidの両方を格納すると3rd Normal Formに違反していることに注意してください。

+0

ありがとうAndomar!私は更新empの代わりに従業員を更新しようとしていました。どうもありがとうございました! –

+0

ManagerIDが入力されたら、ManagerNameが削除されます。 –

関連する問題