2012-08-02 2 views
0

테이블에 Employee가 있습니다. 내가 엑셀 ​​시트를 사용하여 관리자 ID를 업데이트해야 내가이SQL Server 2008에서 자체 조인을 사용하여 테이블을 업데이트하십시오.

UPDATE Employee SET ManagerID = Emp_ID from Employee inner join Employee AS MGR 
on Employee.emp_id=MGR.emp_id WHERE emp_code='1111' 

같은 쿼리를 작성했습니다 있지만 올바른 값

를 업데이트하지

Employee 

Emp_ID Emp_Code Name ManagerID 
1  1111  xyz 2 
2  2222  abc 3 
3  3333  mno 2 

(엑셀에서 값 I가 쿼리 아래에 쓴를 얻을 수 있습니다)

+0

엑셀의 값을 테이블에 저장 했습니까? 그렇다면 테이블의 구조는 무엇입니까? –

답변

1

우리가 말한 것에 따라 직접 가입 할 필요가 없습니다. 즉, 직원의 관리자 ID를 직접 업데이트하면됩니다.

UPDATE Employee 
    SET ManagerID = 2 
    WHERE emp_code='1111' 

그러나 직원의 emp_code 및 관리자의 emp_code (즉, 관리자의 emp_code) 만 업데이트하면됩니다. 관리자의 PK가없는 경우) 하위 쿼리 (상관되지 않음)를 사용할 수 있습니다.

UPDATE Employee 
    SET ManagerID = (SELECT manager.Emp_Id 
         FROM Employee manager 
         WHERE manager.emp_code = '2222') -- Manager's emp_code 
    WHERE emp_code='1111' -- Employee to update's emp_code 

당신이 나중에 (최강의 보스는 관리자가없는 가정)이 직원을 보여주는 쿼리 및 그/그녀의 관리자를 추가해야하는 경우에는 자체를 할 수있는 지금과 같은 조인

SELECT emp.emp_code as EmployeeCode, emp.name as EmployeeName, 
     mgr.emp_code as ManagerEmpCode, mgr.name as ManagerName 
FROM Employee emp 
    LEFT OUTER JOIN Employee mgr 
    ON emp.ManagerId = mgr.Emp_Id 
관련 문제