업데이트 관련 쿼리 0 2 529

by 날아라! [MySQL] [2018.08.22 13:21:29]


a.png (7,165Bytes)

안녕하세요. 셀렉트한 결과값을 다른테이블에 업데이트를 하려고 하는데요

제가 원하는대로 결과가 안나와 고수분들께 질문좀 드릴까합니다.

2개의 테이블이 있습니다.

주문테이블(s_order)과 운송장관리테이블(s_order_weight) 2개가 있습니다.

 

신청서번호가 1개일때 운송장은 여러개가 될수있습니다.

문제는 운송장에 비어있는 신청서번호와 신청자정보를 주문테이블에 있는 값을 가져와 업데이트하려고 합니다.

 

업로드된 이미지는 운송장관리테이블인데요. 운송장관리테이블의 데이터는 외부업체와 연동을 통해 실시간으로 계속 insert가 되고있습니다.

주문테이블과 운송장관리테이블의 공통필드는 운송장번호입니다.

문제는 1개의 신청서에 1개의 운송장만 존재하면 상관없는데 1개신청서에 여러개의 운송장이 있을때가 문제입니다.

주문테이블에서 여러개의 운송장번호는 콤마를 구분자로 입력되어있습니다.

update s_order_weight a
	, s_order b
   set a.invoice_no = b.invoice_no, a.input_person = b.input_person
  where a.ship_num = b.ship_num
    and (a.ship_num = '6094309218756' or b.multibox_ship_num = '6094309218756,6094309187811') 

위 쿼리는 테스트중인 쿼리인데요 아무래도 뭐가 잘못되었는데, 어디서 잘못되었는지 알수가 없네요.

위 쿼리에서

6094309218756,6094309187811 <--- 이값은 멀티운송장입니다.

6094309218756 <-- 이값은 대표 운송장입니다.

 

첨부이미지에서 6094309187811 <-- 이 운송장의 값을 업데이트 하려면 어떻게 해야되는지 조언좀 부탁드립니다.

 

질문이 오락가락 하네요. 죄송함댜.

 

 

by 신이만든지기 [2018.08.22 14:09:32]
s_order_weight 테이블에 대응하는 s_order의 샘플 데이터와 
최종적으로 원하는 s_order_weight 테이블의 형태를 추가로 올려주시면, 아마 빠르게 답변이 달릴 겁니다.

by 마농 [2018.08.22 14:09:40]

운송장번호 자리수는 13자리 고정인가요?
자리수 고정이라면 단순 INSTR 으로 조인하면 되구요.
가변 자리수라면? 앞뒤로 컴마 붙여서 조인하셔야 합니다.
 

UPDATE s_order_weight a
     , s_order b
   SET a.invoice_no   = b.invoice_no
     , a.input_person = b.input_person
  WHERE a.invoice_no IS NULL
    AND INSTR(b.multibox_ship_num, a.ship_num) > 0  -- 고정자리
--  AND INSTR(CONCAT(',', b.multibox_ship_num, ','), CONCAT(',', a.ship_num, ',')) > 0  -- 가변자리
--  AND 검색 조건 추가(예 : b.invoice_no = 1111)
;

 

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