테이블이 다르고 온라인/오프라인 기능을 지원해야 해서 안드로이드에서 쓰는 sqlite의 업데이트 쿼리인 이 쿼리문을 update survey_his set dept_id = (select dept_id from survey_prod where survey_his.dept_id = survey_prod.dept_id) , LOCA_ID = (select LOCA_ID from survey_prod where survey_his.LOCA_ID = survey_prod.LOCA_ID) , EMP_ID = (select EMP_ID from survey_prod where survey_his.EMP_ID = survey_prod.EMP_ID) , PROD_STATUS_FLG = (select PROD_STATUS_FLG from survey_prod where survey_his.PROD_STATUS_FLG = survey_prod.PROD_STATUS_FLG) where survey_his.prod_Barcode = ?
이런 식으로
query = UPDATE product P SET (DEPT_ID, LOCA_ID, EMP_ID, PROD_STATUS_FLG ) = ( SELECT SURV_DEPT_ID, SURV_LOCA_ID, SURV_EMP_ID, PROD_STATUS_FLG FROM surveyH S WHERE S.prod_barcode = ? 000000010087 AND S.SURV_YEAR = ? 2016 AND S.SURV_NO = ? ) 5 WHERE P.PROD_BARCODE = ? 000000010087
오라클 구문으로 바꿨습니다.
이 쿼리들은 한개씩 지원하는 것이라 괜찮았는데요
대량 업데이트 하는 법을 잘 모르겠습니다.
sqlite 구문은 이렇게 형성되어져 있습니다.
update survey_his
set
dept_id = (select dept_id from survey_prod where survey_his.dept_id = survey_prod.dept_id) ,
LOCA_ID = (select LOCA_ID from survey_prod where survey_his.LOCA_ID = survey_prod.LOCA_ID) ,
EMP_ID = (select EMP_ID from survey_prod where survey_his.EMP_ID = survey_prod.EMP_ID) ,
PROD_STATUS_FLG = (select PROD_STATUS_FLG from survey_prod where survey_his.PROD_STATUS_FLG = survey_prod.PROD_STATUS_FLG)
where survey_his.dept_id = ? ;
부서 코드로 구분해서 부서별로 업데이트 하는 구문입니다.
검색을 해 봐도
UPDATE product P
SET (DEPT_ID, LOCA_ID, EMP_ID, PROD_STATUS_FLG ) =
( SELECT SURV_DEPT_ID, SURV_LOCA_ID, SURV_EMP_ID, PROD_STATUS_FLG FROM surveyH S
WHERE S.SURV_DEPT_ID = 1 AND S.SURV_YEAR = 2016 AND S.SURV_NO = 5 )
이런 식으로밖에 못 짜겠어서 도움의 손길 요청드립니다 ㅠㅠ...
surveyH 랑 product 조인이 되는게 있어야 해당 컬럼에 데이터를 넣을것 같은데요.
SELECT SURV_DEPT_ID, SURV_LOCA_ID, SURV_EMP_ID, PROD_STATUS_FLG FROM surveyH S
WHERE S.SURV_DEPT_ID = 1 AND S.SURV_YEAR = 2016 AND S.SURV_NO = 5
의 쿼리는 하나의 로우만 만들어지나요? 만약 DEPT_ID 가 PK 이라고 하면
WHERE S.SURV_DEPT_ID = 1 -> WHERE S.SURV_DEPT_ID = P.DEPT_ID
라고 고치시면 될텐데요.
ㅠㅠ 저게 온라인에서는 테이블명이 다 다르거나 반대로 되어 있더라구요...
결론적으로는
UPDATE product A
SET (A.DEPT_ID, A.LOCA_ID, A.EMP_ID, A.PROD_STATUS_FLG) =
( SELECT B.SURV_DEPT_ID, B.SURV_LOCA_ID, B.SURV_EMP_ID, B.PROD_STATUS_FLG
FROM surveyH B
WHERE A.PROD_ID = B.PROD_ID
AND A.PROD_BARCODE = B.PROD_BARCODE
AND B.SURV_YEAR = 2016
AND B.SURV_SEQ = 4
)
WHERE A.DEPT_ID = 1
요런 거였습니다...