2009-05-20 4 views
0

J'ai besoin de mettre à jour le champ managerid avec l'employé associé.Normaliser les données

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 

Répondre

5

Vous pouvez joindre à la table des employés pour trouver l'identifiant d'un gestionnaire:

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

Soyez conscient que le stockage à la fois le nom du gestionnaire et l'ID du gestionnaire dans une rangée d'employé viole 3rd Normal Form.

+0

Merci Andomar! J'essayais de mettre à jour l'employé au lieu de mettre à jour emp. Merci beaucoup! –

+0

Je vais supprimer ManagerName une fois que j'ai récupéré ManagerID. –

Questions connexes