I have 4 tables here, I need to multiply newly entered row value in a table with another row and find the total sum using CustomerId
:
CustomerTable:
CustomerId Name EmailId ------------------------- 1 Paul r@r.com 2 John J@j.com
LoyaltyPointTable:
LoyaltyPointsId LoyaltyType Points --------------------------------------- 1 Registration 10 2 Loginstatus 1 3 Downloading 10 4 Redemming 1 5 Sharing 20 6 Refer 10
LoyaltyDetailsTable:
LoyaltyDetailsId LoyaltyPointsId CustomerId Dates ------------------------------------------------- 1 1 1 2015-01-22 2 2 1 2015-01-22 3 3 2 2015-01-22 4 3 1 2015-01-22 5 4 1 2015-01-22 6 4 1 2015-01-24 7 5 1 2015-01-24
This query works fine for the total sum for each LoyaltyType
SELECT LoayaltyPointsTable.LoyaltyType, COUNT(CustomerTable.CustomerId) AS UserActions, SUM(LoayaltyPointsTable.Points) AS TotalPoints FROM LoayaltyPointsTable JOIN LoyaltyDetailsTable ON LoayaltyPointsTable.LoyaltyPointsId = LoyaltyDetailsTable.LoyaltyPointsId JOIN CustomerTable ON CustomerTable.CustomerId = LoyaltyDetailsTable.CustomerId WHERE CustomerTable.CustomerId = 1 GROUP BY LoyaltyDetailsTable.CustomerId ,LoayaltyPointsTable.LoyaltyType
below RedeemPointsTable
is created with relation to row redeeming in LoyaltyPointTable
:
RedeemPointsTable:
RedeemPointsId CustomerId ShopName BillNo Amount ------------------------------------------------ 1 1 Mall x 4757 100 3 1 Mall y SH43 50 4 1 Mall x 7743 10 6 1 Mall x s34a 60
What I am expecting is before calculating the total sum, I want column Amount
sum (100+50+10+60) * 1
in Redeeming
in LoyaltyPointTable
to be added with total points for each CustomerId
Expected output
LoyaltyType UserActions TotalPoints ------------------------------------- Downloading 1 10 Loginstatus 1 1 Redemming 4 (100+50+10+60)*1(here using Amount in RedeemPointsTable) Refer 1 10 Registration 1 10 Sharing 1 20
User actions count is 4, it is based on the Amount
he entered in RedeemPointsTable
Should I need to make changes in adding a foreign key column in RedeemPointsTable
or can you point out my mistake?
Any help would be great.