2014-03-25 2 views
1

오라클 11g SQL & 두 테이블은 동일한 열 정의가에서 테이블 :업데이트 오라클 11g의 여러 열에서 다른 테이블

VARCHAR2(11) 
NUMBER 
DATE 
DATE 

나는이 문제에 대한 해결책을 찾기 위해 노력하고,이 내가이 끝난 것입니다 와, 이는 실패

update jjjTable 
set [fourthCol] = B.[fourthOtherCol] 
from jjjTable, otherTable B 
where jjjTable.[firstCol] = B.[firstOtherCol] 
and jjjTable.[secondCol] = B.[secondOtherCol] 
and jjjTable.[thirdCol] = B.[thirdOtherCol] 

이 기사에 기반이의에서 나는이 필요 인상을 해요 :

01,230,846,695,251,418,849,242,321 0 Shivkant

에서 편집 된 응답

내가 사용해야 할 수도 있습니다 인상을 해요이 문서에 따라 가입 :

How do I UPDATE from a SELECT in SQL Server? 로빈 날

의 응답하지만 난 그것을 이해 조인은 행당 하나의 열 일치에서만 수행됩니다. 3 가지 요소를 매치하는 데 관심이 있습니다. 솔루션에 대한 명확한 경로를 찾지 못했습니다.

방향을 잘 받아 들일 것입니다.

+0

아마도이 관련 질문은 도움이됩니다. http://stackoverflow.com/questions/2446764/oracle-update-statement-with-inner-join –

+0

나는 제안을 크게 주셔서 감사합니다. 여러 열을 사용하여 코드 일부를 적용 할 수 있는지 확인합니다. – aNewGuy

답변

0

이것은 내가 솔루션으로 할 필요가 결국 무엇을 :

DECLARE 
CURSOR j_CUR IS 

SELECT A.[fourthCol] 
FROM JJJtable A, otherTable B 
WHERE A.[firstCol] = B.[firstOtherCol] 
and A.[secondCol] = B.[secondOtherCol] 
and A.[thirdCol] = B.[thirdOtherCol] 

FOR UPDATE OF B.[fourthOtherCol]; 
SOME_DATE DATE; 

BEGIN 
FOR IDX IN j_CUR LOOP 
SOME_DATE :=(IDX.[fourthCol]); 
UPDATE otherTable 
SET [fourthOtherCol] = SOME_DATE 
WHERE CURRENT OF j_CUR; 
END LOOP; 
END; 

이 당신의 노력과지도에 감사드립니다.

+0

좀 더 우아한 해결책을 찾고 싶지만이 방법이 효과적입니다. – aNewGuy

+0

원래 열 명명법을 반영하도록 편집되었습니다. – aNewGuy

관련 문제