2개이상 테이블 Join 후 Update 하고 싶습니다. 0 2 5,110

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도 해봤는데 잘 안되더군요.. 부탁드립니다. 감사합니다.

 

by DarkBee [2015.01.16 12:24:41]

UPDATE 테이블을 각각 처리하시는게 좋아보입니다.


by 디비바이블 [2020.02.19 14:01:31]
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'

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입