데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

update 쿼리 질문입니다.

희망나라 2016.04.22 15:57 Views : 2466

create table comp_ (Comcode varchar(10)null
                    ,gubun varchar(1)null
                    ,BrenchSusu decimal(5,2) null
                    ,CardSusu decimal(5,2) null
                    ,CashSusu decimal(5,2) null
                    )
                   
create table parts_ (barcode varchar(10)null
                    ,Comcode varchar(5)null
                    ,item varchar(20) null
                    ,BrenchSusu decimal(5,2) null
                    )
                   
create table outd_ (junno varchar(10) null
                    ,barcode varchar(10)null
                    ,comcode varchar(5) null
                    ,money1 decimal(15,2) null
                    ,BrSusuMoney1 decimal(15,2) null
                    ,CardMoney1 decimal(15,2) null
                    ,CashMoney1 decimal(15,2) null
                    )

insert into comp_ values ('10001', '', 10, 0, 0), ('10002', 'S', 1, 2, 3), ('10003', '', 10, 20, 30), ('10004', '', null, null, null)

insert into parts_ values ('11111', '10001', '', 0), ('22222', '10001', '', 10), ('33333', '10001','', 20)
                        , ('44444', '10002', '', 0), ('55555', '10002', '', null)
                        , ('66666', '10003', '', 0), ('77777', '10003', '', 10)
                        , ('88888', '10004','', 20), ('99999', '10004','', 0)

insert into outd_ values ('00000', '11111', '10001', 1000, 0, 0, 0), ('00000', '22222', '10001', 2000, 0, 0, 0)
                       , ('00000', '33333', '10001', 3000, 0, 0, 0), ('00000', '55555', '10002', 2000, null, null, null)
                       , ('00001', '88888', '10004', 1000, 0, 0, 0), ('00001', '99999', '10004', 2000, 0, 0, 0)
                       , ('00001', '11111', '10001', 3000, 0, 0, 0), ('00001', '22222', '10001', null, null, null, null)  
                       , ('00001', '55555', '10002', 2000, 0, 0, 0)                   


--쿼리 1안
update d set d.BrSusuMoney1 = ISNULL(d.money1, 0.00) * (p.BrenchSusu / 100)
           , d.CardMoney1 = ISNULL(d.money1,0.00) * (p.CardSusu / 100)
           , d.CashMoney1 = ISNULL(d.money1,0.000) * (p.CashSusu / 100)
 from outd_ as d
Join (select p.barcode, ISNULL(p.BrenchSusu,0.00) as BrenchSusu, ISNULL(c.CardSusu,0.00) as CardSusu, ISNULL(c.CashSusu,0.00) as CashSusu
      from parts_ p
      join
      (select comcode, CardSusu, CashSusu from comp_ where gubun = 'S') c
      on p.Comcode = c.Comcode
      where p.Comcode = c.Comcode) P
on d.barcode = p.barcode
where d.junno='00000'


--쿼리 2안

update d set d.BrSusuMoney1 = ISNULL(d.money1, 0.00) * (p.BrenchSusu / 100)
           , d.CardMoney1 = ISNULL(d.money1,0.00) * (p.CardSusu / 100)
           , d.CashMoney1 = ISNULL(d.money1,0.000) * (p.CashSusu / 100)
 from outd_ as d
Join (select p.barcode, ISNULL(p.BrenchSusu,0.00) as BrenchSusu, ISNULL(c.CardSusu,0.00) as CardSusu, ISNULL(c.CashSusu,0.00) as CashSusu
      from (select barcode, comcode, BrenchSusu from  parts_ where barcode in (select barcode from outd_ where junno='00000'))  p
      join
      (select comcode, CardSusu, CashSusu from comp_ where gubun = 'S') c
      on p.Comcode = c.Comcode
      where p.Comcode = c.Comcode) P .
on d.barcode = p.barcode
where d.junno='00000'


outd_ 의  BrSusuMoney1 은 parts_ 의 BrenchSusu 로 계산하고 CardMoney1 와 CashMoney1 은 comp_  의 cardsusu, cashsusu로 게산하는

쿼리입니다.

쿼리1안과 쿼리 2안의 차이점은 join 절의 인라인뷰에서 parts_ 의 바코드을 가지고 올때 outd_의 junno을

 참조하느냐, 안하느냐 차이입니다.


저는 2안이 좀더 직관적이라 더 좋은것 같습니다.

질문은 join 절의 쿼리결과 값이 아무것도 없다면 update 문장이 실행되는지 안되는지 궁금합니다.

실행은 되는데 update 할것이 없으므로 update 가 안되는것인지 아니면 실행자체가 안되는 것인지.?

항상 물음표에 길잡이가 되어주는 커뮤니티에 감사드립니다.



No. Subject Author Date Views
9292 데이터베이스 삭제 옵션에 대해서 궁금합니다. [4] 냉동창고 2016.04.27 2431
9291 'getdate 형식이 일치하지 않습니다' 라고 나옵니다 [11] 미래니뮤 2016.04.26 3286
9290 HTTP 오류 405.0 [4] dowk1122 2016.04.25 3163
9289 select 문 레코드 카운터 0 ?? [5] lyn1216 2016.04.25 2393
9288 SQL 서버 쿼리 응답 시간 지연 관련 도움 문의 드립니다. [1] mj124356 2016.04.25 2273
» update 쿼리 질문입니다. [6] 희망나라 2016.04.22 2466
9286 오픈쿼리에 관한 질문 한개 드리겠습니다. [4] 아싸라비아콜롬비아 2016.04.22 2313
9285 기간으로 MM 을 구할 수 있을까요? [4] DOOLLY 2016.04.21 2445
9284 MS-SQL 2008 R2 설치 후 발생한 오류화면입니다. [2] 얼음왕자 2016.04.21 4214
9283 중복제거 문의 드립니다. [14] 아싸라비아콜롬비아 2016.04.21 2462
9282 vb.net 프로그래밍 중 쿼리속도 질문 [3] 봉봉가가 2016.04.21 3174
9281 query 질문 드리겠습니다. [6] 호짱 2016.04.19 2539
9280 쿼리질문좀 드리려고 하는데요 [3] 카루카루 2016.04.19 2143
9279 고수님들 부탁좀드리겠습니다 ㅠㅠ [2] 말랑이 2016.04.18 2279
9278 sql 2000 server를 설치하고자 하는데 안되서 질문 드립니다.. [1] 슈토파이터 2016.04.18 2016
9277 외부에서 db 백업복구 [6] rodins 2016.04.15 4763
9276 ms-sql에 서버개체 연결된 서버로 오라클을 db링크해서 사용하고 있는데요 [1] 아싸라비아콜롬비아 2016.04.14 2080
9275 pivot 질문드립니다. [3] Lynn 2016.04.12 2525
9274 클라이언트 응용프로그램에서 SP실행과 스튜디오 에서 SP 실행 속도의 차이 [22] 쏭쏭쏭 2016.04.12 4004
9273 case when 관련해서..(뭐라 제목할지 모르겠네요ㅜㅜ) [1] 광연반점 2016.04.11 2441





XE Login