반응형
[Tibero] 티베로 여러 테이블 select join 결과 update 하는 방법
(티베로 join update, 티베로 select join update, 티베로, select 결과 update)
A,B,C 각 3개의 테이블을 join한 결과를
C 테이블에 UPDATE 치고 싶었다.
대충 아래와 같이 SELECT JOIN 한 결과를 C테이블에 업데이트 치고 싶다..
SELECT *
FROM TAB_A AS A, TAB_B AS B, TAB_C AS C
WHERE A.ACODE = B.BCODE -- A테이블 <-> B테이블 JOIN KEY
AND A.PRD_NO = C.PRO_NO -- A테이블 <-> C테이블 JOIN KEY
AND A.CUS_NAME = C.CUS_NAME -- A테이블 <-> C테이블 JOIN KEY
AND A.ORDER_DATE = C.O_DATE -- A테이블 <-> C테이블 JOIN KEY
AND A.GENDER = 'M' -- 기타 WHERE 조건절
AND A.PRIO = '001' -- 기타 WHERE 조건절
아 뭔가 될 거 같은데, 어떻게 해야하지 고민하다가..
쿼리 짤 때 도움많이 준 CHAT GPT 랑 구글 GEMINI 한테 물어봤다 ㅋㅋㅋ
오 뭔가 될거 같아.. 해봤는데
티베로에서는 해당 쿼리가 안먹힌다. (사실 오라클에서는 먹는지 안먹는지 모르겠다..)
-- CHAT GPT 가 알려준 쿼리
-- 하지만 티베로 에서 작동 안된다!!
UPDATE customers AS c
INNER JOIN orders AS o ON c.id = o.customer_id
INNER JOIN products AS p ON o.product_id = p.id
SET c.name = '새로운 이름',
p.name = '새로운 제품 이름',
o.order_date = '2024-04-16'
WHERE c.id = 123;
실망감을 가득 안고 다시 구글링을 열심히 해서
이것저것 삽질을 하다가, 해결 방안을 찾았다.
UPDATE문 자체에는 수정할 테이블 하나만 써야하고
WHERE 절에 EXISTS + 서브쿼리 를 사용하여 해결하였다.
신기한게, 서브쿼리 안에서도 C테이블 조인이 되더라..!
티베로에서 여러 테이블 select join 결과 update 하시려는 분들 참고하시길
UPDATE TAB_C AS C
SET C.name = '새로운 이름',
C.order_date = '2024-04-16'
WHERE EXISTS ( SELECT 1
FROM TAB_A AS A, TAB_B AS B
WHERE A.ACODE = B.BCODE -- A테이블 <-> B테이블 JOIN KEY
AND A.PRO_NO = C.PRO_NO -- A테이블 <-> C테이블 JOIN KEY
AND A.CUS_NAME = C.CUS_NAME -- A테이블 <-> C테이블 JOIN KEY
AND A.ORDER_DATE = C.O_DATE -- A테이블 <-> C테이블 JOIN KEY
AND A.GENDER = 'M' -- 기타 WHERE 조건절
AND A.PRIO = '001' -- 기타 WHERE 조건절
);
티베로 / tibero join update / 티베로 여러 테이블 select join update / 티베로 update
반응형
'공부 > 개발자 기초 지식' 카테고리의 다른 글
Tracert, ping 명령어 관련 글 (0) | 2024.11.20 |
---|---|
[SQL] 특정 컬럼의 첫번째 값만 가져오는 쿼리 (제일 최신 날짜의 값만 가져오는 쿼리) (0) | 2023.11.24 |
OSI 7계층 북마크 (0) | 2020.04.23 |
WAS와 웹서버의 차이 북마크 (0) | 2020.04.06 |
오라클 11g 완벽 삭제 북마크 (0) | 2020.03.18 |