by 짱구 [SQL Query] update multi table join [2015.01.16 09:15:50]
시스템 환경은 오라클 11g입니다.
제가 하고싶은것은
update member t1 , goods t2 , product t3 set t2.name = '데이터' , t2.yn = 'Y' , t3.name = '데이터' , t3.yn = 'Y' where t1.goodsId = t2.goodsId and t1.productId = t3.productId
하고 싶습니다. 하지만 에러를 내더군요 그래서
update /*+ bypass_ujvc */ (select t2.name t2_name , t2.yn t2_yn , t3.name t3_name , t3.yn t3_yn from member t1 , goods t2 , product t3 where t1.goodsId = t2.goodsId and t1.productId = t3.productId) set t2_name = '데이터' , t2_yn = 'Y' , t3_name = '데이터' , t3_yn = 'Y'
했는데 11g라 힌트를 줄수 없더군요.
어떻게 하면 member, goods, product 테이블 join 맺으면서 goods테이블과 product테이블의 값을
update를 할수 있을까요? 제가 생각하기엔 using문, merge문 이용이 남은것 같은데.. merge도 해봤는데 잘 안되더군요.. 부탁드립니다. 감사합니다.
merge into goods a using( select t2.name , t2.yn from member t1 , goods t2 , product t3 where t1.goodsId = t2.goodsId and t1.productId = t3.productId ) b WHEN MATCHED THEN UPDATE SET name = '데이터' , yn = 'Y'
나머지 테이블 product도 마찬가지로 아래와 같이
merge into product a using( select t3.name , t3.yn from member t1 , goods t2 , product t3 where t1.goodsId = t2.goodsId and t1.productId = t3.productId ) b WHEN MATCHED THEN UPDATE SET name = '데이터' , yn = 'Y'