update 쿼리 질문입니다.

희망나라 2016.04.22 15:57 Views : 2563

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
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 38119
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 20673
9303 다중 pivot 문의입니다. [1] 기정아빠 2016.04.29 3027
9302 집계함수 사용 시 중복 데이터 가져올 방법은 없는건가요?! [1] Blue2 2016.04.29 2711
9301 월별통계 쿼리질문 [3] seyo 2016.04.29 3684
9300 mssql 그룹 랜덤쿼리문의 [3] 소영22 2016.04.28 3771
9299 동적 PIVOT 질문드립니다. ㅠㅠ [1] unclezeze 2016.04.28 2709
9298 2014 서버 저장프로시저 디버깅방법문의 [3] 민성 2016.04.28 2121
9297 ms-sql 프로시져 속도 개선관련.... [4] 아싸라비아콜롬비아 2016.04.28 2691
9296 mssql 2008 트리거 관련 질문 드립니다. [7] 디비는어려워요 2016.04.27 2944
9295 레코드 값은 그대로 행과 열을 바꾸는 쿼리 질문드립니다. [10] spirit 2016.04.27 2636
9294 CONVERT를 이용해 DATETIME 변환 문제 [3] 미래니뮤 2016.04.27 2568
9293 DB 복원질문 드립니다. [4] HoyaSoft 2016.04.27 2309
9292 데이터베이스 삭제 옵션에 대해서 궁금합니다. [4] 냉동창고 2016.04.27 2517
9291 'getdate 형식이 일치하지 않습니다' 라고 나옵니다 [11] 미래니뮤 2016.04.26 3394
9290 HTTP 오류 405.0 [4] dowk1122 2016.04.25 3282
9289 select 문 레코드 카운터 0 ?? [5] lyn1216 2016.04.25 2546
9288 SQL 서버 쿼리 응답 시간 지연 관련 도움 문의 드립니다. [1] mj124356 2016.04.25 2397
» update 쿼리 질문입니다. [6] 희망나라 2016.04.22 2563
9286 오픈쿼리에 관한 질문 한개 드리겠습니다. [4] 아싸라비아콜롬비아 2016.04.22 2459
9285 기간으로 MM 을 구할 수 있을까요? [4] DOOLLY 2016.04.21 2555
9284 MS-SQL 2008 R2 설치 후 발생한 오류화면입니다. [2] 얼음왕자 2016.04.21 4444





XE Login