2011-02-03 6 views
0

쿼리를 조인 SQL :이 문제를

UPDATE EMPLOYEE AS E 
INNER JOIN EMPLOYEE_TEL AS T ON E.EMP_NUMBER = T.EMP_NUMBER 
    SET E.FIRST_NAME = @fname 
     ,E.MID_NAME = @mname 
     ,E.INITIALS [email protected] 
     ,E.SURNAME = @sname 
     ,E.GENDER = @gender 
     ,E.CIVIL_STATUS = @CS 
     ,E.DOB [email protected] 
     ,E.NIC_NUMBER = @nic 
     ,E.ADDRESS_LINE1 [email protected] 
     ,E.ADDRESS_LINE2 = @adline2 
     ,E.ADDRESS_LINE3 = @adline3 
     ,E.EMAIL = @email 
     ,E.DESG_NO [email protected] 
     ,E.BASIC_SALARY = @sal 
     ,E.TITLE = @title 
     ,[email protected] 
WHERE [email protected] 

나는이 SQL 서버에 시도하지만 오류

'메시지 156, 수준 15, 상태 1, 줄 절차 SPUPDATEEMP, 함께했다 21
키워드 'AS'근처의 구문이 잘못되었습니다.

오류를 찾을 수 없습니다. 잘못인가?

답변

0

JOINS를 수행 할 때 테이블 이름의 별명을 "as"로 지정할 필요가 없습니다.

그러나 업데이트를 수행 할 때 수행하려는 것처럼 별명을 지정할 수 없습니다.

UPDATE E 
FROM Employee 
+0

ok.thank very much.i 2 개의 업데이트 문을 사용하여 수정했습니다. 다시 한 번 감사드립니다 :) –

2
UPDATE EMPLLOYEE 
    SET FIRST_NAME = @fname 
     ,MID_NAME = @mname 
     ,INITIALS [email protected] 
     ,SURNAME = @sname 
     ,GENDER = @gender 
     ,CIVIL_STATUS = @CS 
     ,DOB [email protected] 
     ,NIC_NUMBER = @nic 
     ,ADDRESS_LINE1 [email protected] 
     ,ADDRESS_LINE2 = @adline2 
     ,ADDRESS_LINE3 = @adline3 
     ,EMAIL = @email 
     ,DESG_NO [email protected] 
     ,BASIC_SALARY = @sal 
     ,TITLE = @title 
WHERE [email protected] 

UPDATE EMPLOYEE_TEL 
    SET [email protected] 
    WHERE [email protected] 
+1

두 개의 테이블 (E. 및 T.)을 동일한 단일 UPDATE 문으로 업데이트 할 수 있습니까 ??? –

+0

@marc_s : 그냥 저 자신이 알아 차 렸습니다. 답변을 업데이트 중입니다. –

+0

두 번째 업데이트에서 EMPLOYEE에 실제로 JOIN이 필요합니까 ?? 나는 당신이 단지'충분히 EMP_NUMBER = @ empnum'을 사용한다면 충분히 좋을 것이라고 믿는다. 아니오 ?? –

0

은 당신이 할하려는 것은 두 테이블을 한 번에 업데이트입니다 - 당신이 SQL 서버에서이 작업을 수행 할 수 없습니다 - 당신이 두 개의 개별 업데이트로이 분할해야합니다 :

UPDATE EMPLOYEE 
SET 
    FIRST_NAME = @fname, 
    MID_NAME = @mname, 
    ..... 
    TITLE = @title 
WHERE 
    EMP_NUMBER = @empnum 

UPDATE EMPLOYEE_TEL 
SET 
    TELEPHONE = @tel 
WHERE 
    EMP_NUMBER = @empnum 
관련 문제