Li

Delete

Are you sure you want to delete this?

CntanzModel


Date
20220204
Target
C_033
Title
Linq INNER JOIN and SQL INNER JOIN - 결제완료한 경우에만 TanzMemberPurchaseSum에 카운트가 되도록 하는 식을 만들기 위해
Contents
오픈하고 나니 버그, 결제를 하지 않은 상품도 마일리지와 쿠폰을 주는 오류 발생. 원인은 결제 하지 않아도 TanzMemberPurchaseSum 테이블에 적혀지는 RealPayment와 PresentSum이 문제였다. 따라서 TanzMemberPurchaseSum과 연계되 ShippingDetail table 의 해당 거래 건에 대해 결제가 되지 않은 경우, 즉 ShippingDetails.StepForDeliveryId = 1일 경우에는 카운트가 되지 않게 하는 식을 써야 했다. SQL의 경우 식은 아래와 같다. select sum(PresentSum) From TanzMemberPurchaseSum inner join ShippingDetails ON TanzMemberPurchaseSum.ShippingDetailsId = ShippingDetails.ShippingDetailsId AND ShippingDetails.StepForDeliveryId<>1 where TanzMemberPurchaseSum.Id='f66694aa-8cee-406c-98a0-001e2b221259' 이것을 LINQ로 바꾸어 주어야 한다. var sum3 = (from tm in db.TanzMemberPurchaseSums from sd in db.ShippingDetails where tm.ShippingDetailsId == sd.ShippingDetailsId && sd.StepForDeliveryId != 1 && tm.Id == id select tm.RealPayment).Sum(); 이상의 식으로 결제완료된 것만 카운팅에 넣게 되어 이제 더 이상의 미결제가 카운팅 돼 쿠폰이 발행되거나 마일리지가 더해지는 일이 없어졌나? 마일리지 체크 - 이것은 안됐다. 마일리지는 dcmlRealPayment로 넘어오는 값이다. 이것을 다음에 적용할 수 있도록 하려면?