database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39202 게시물 읽기
No. 39202
update 쿼리 질문입니다. 도와주세요!!
작성자
박용선
작성일
2012-01-03 13:47
조회수
4,804

회원테이블 2개의 컬럼에 업데이트를 하려구 하는데요!!

업데이트 조건은 1:1 매핑 업데이트 입니다. 회원테이블에 기본키는 user_id 이고, 조인이 걸릴 테이블에는 user_id가 없고, 제 3의 테이블에서

또다시 조인을 걸어서 user_id를 가져오게 됩니다.

문제가 되는건 회원테이블과 조인이 걸릴 테이블에 user_id가 있으면 상관이 없지만, 제 3의 테이블에서 user_id가 있으니 이 user_id와 어떻게 조인을

걸어야 할지 난감한 상황입니다.(실력부족 ㅠ.ㅠ)

제가 사용하는 쿼리입니다.

UPDATE USER_INFO X SET (PROF_CODE, USER_CODE) = (
       SELECT PROF_CODE, USER_CODE
         FROM
             (
       SELECT C.CUST_IDX
              , D.USER_ID
              , MAX(A.PROF_CODE) PROF_CODE
              , MAX(A.USER_CODE) USER_CODE
              , MAX(D.ORDERNUMBER) ORDERNUMBER
         FROM TEMP_SAPUSERINFOKOR A
              , ACC_INVOICE B
              , ACC_USER_ORDER C
              , ORDER_COMM D
       WHERE A.INV_NUM = B.INVOICE_NUM
         AND B.ACC_IDX = C.ACC_IDX
         AND B.CUST_IDX = C.CUST_IDX
         AND C.ORDERNUMBER = D.ORDERNUMBER
         AND PROF_CODE IS NOT NULL
         AND USER_CODE IS NOT NULL
       GROUP BY C.CUST_IDX, D.USER_ID
      )
      )
  WHERE X.USER_ID = ?

 위의 쿼리중 조인되어서 USER_ID를 가져오는 테이블이 ORDER_COMM 테이블에서 가져옵니다.

 USER_INFO 테이블과 1:N 관계여서 MAX데이터로 한개의 데이터를 가져오구요!!

 도와주십시요^^* 부탁드리겠습니다~~

이 글에 대한 댓글이 총 1건 있습니다.

EditPlus로 작업한거라서 문법에 조금 문제가 될수도있는데요...

아래 처럼 하면 될듯한데요 ^^;

UPDATE /*+ BYPASS_UJVC  */
 (SELECT
  X.PROF_CODE  X_PROF_CODE
  ,X.USER_CODE  X_USER_CODE
  ,A.PROF_CODE  A_PROF_CODE
  ,A.USER_CODE  A_USER_CODE 
  FROM (
  SELECT USER_ID
   , MAX(A.PROF_CODE) PROF_CODE
   , MAX(A.USER_CODE) USER_CODE
   FROM ORDER_COMM D
    , ACC_USER_ORDER C
    , ACC_INVOICE B
    , TEMP_SAPUSERINFOKOR A
   WHERE A.INV_NUM = B.INVOICE_NUM
   AND B.ACC_IDX = C.ACC_IDX
   AND B.CUST_IDX = C.CUST_IDX
   AND C.ORDERNUMBER = D.ORDERNUMBER
   AND PROF_CODE IS NOT NULL
   AND USER_CODE IS NOT NULL
   AND D.USER_ID = ?
   GROUP BY D.USER_ID
  ) A,
  USER_INFO X
  WHERE X.USER_ID = A.USER_ID
 )
 SET X_PROF_CODE = A_PROF_CODE
  ,X_USER_CODE = A_USER_CODE

이경택(나만의빛)님이 2012-01-03 16:59에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39205ERWin 툴 사용 [1]
금봉훈
2012-01-05
3689
39204대량의 데이터를 뷰로 만들어도 될까요 ? [3]
윤명철
2012-01-04
5312
39203데이터 베이스 스크립트로 생성 법줌 알려주세요 ㅜㅜ [1]
한근희
2012-01-03
3496
39202update 쿼리 질문입니다. 도와주세요!! [1]
박용선
2012-01-03
4804
39201날짜 계산질문드립니다.. [1]
추평사
2012-01-03
4399
39200analyze와 인뎉스 rebuild관련
홀길남
2012-01-02
3510
39199질문사항입니다. [1]
kim
2011-12-29
3536
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다