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로 넘어오는 값이다. 이것을 다음에 적용할 수 있도록 하려면?