2015-02-10 74 views
0

我有4代表在這裏,我試圖更新時,新的行與另一個表中使用LINQLINQ的更新行,如果新行插入另一個表

CustomerTable的添加最後一項排:

CustomerId Name EmailId 
------------------------- 
1   Paul [email protected] 
2   John [email protected] 

下表我對每個LoyatyType

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     2   1  2015-01-24 // here one new row is added based on LoginStatus 

他做登錄一次,所以他的LoginStatus點是1,現在我想在下面更新另一個表中這一點

預期輸出:

PriceClaimTable

PriceClaimId CustomerId PriceId Current Points 

1    2   22   150 
2    1   23   200 // here update the last row of CustomerId as 231 
             //based on every new entry on LoyaltyDetailsTable 

說,如果他再次登錄200 + 1 = 201
然後他被下載201 + 10 = 211
然後,他不共享211 + 20 = 231

我可以使用sql在LINQ和觸發找到解決方案?

+0

您正在使用哪些DBMS? Postgres的?甲骨文? – 2015-02-10 13:33:05

+0

我正在使用Sqlserver 2012 – stom 2015-02-10 13:36:53

回答

1

使用可以使用triggers來完成這項工作。你可以看this寫一個。

+0

我們可以在Linq中使用觸發器還是有其他方法 – stom 2015-02-10 13:34:09

+0

我對Linq沒有太多想法..但是AFAIK我們可以使用Linq-to-SQL提供程序 – 2015-02-10 16:22:20

+0

非常感謝你karthik,我像你說的那樣使用了觸發器,最後它起作用了,很抱歉如此晚的接受你的答案。 – stom 2015-03-24 09:48:49

1

如何創建加入LoyaltyPointTable的LoyaltyDetailsTable的視圖,以在每個客戶之間累積LoyaltyPointTable.Points,例如,東西(取決於您的SQL方言)

CREATE VIEW PriceClaimView 
AS 

SELECT CustomerId, SUM(LPT.Points) AS CurrentPoints 
FROM LoyaltyDetailsTable LDT INNER JOIN LoyaltyPointTable LPT ON LDT.LoyaltyPointsId = LPT.LoyaltyPointsId 
GROUP BY CustomerId 
+0

這樣做的好處是,如果您因爲某些原因需要刪除LoyaltyDetailsTable條目,那麼在下次閱讀時自動更正查看 – jksemple 2015-02-10 13:13:39

+0

我得到的錯誤如下:關鍵字'BEGIN'附近的語法錯誤,更多的問題,使用此可以根據LoyaltyDetailsTable中的更改將PriceClaimTable行從200更新爲231?我正在使用Sqlserver 2012 – stom 2015-02-10 13:32:31

+1

哪個DBMS在創建**視圖時使用'begin .. end' **? – 2015-02-10 13:33:37

1

1,在你的數據引擎

,你可以使用觸發器

2一樣,你的程序

你可以代碼的機制。

通常會傷害到性能,我將使用計劃B

+0

嗨,我也喜歡代碼機制,但我怎麼能在Linq中實現這一點,我的意思是在另一個表中找到變化並更新表格行 – stom 2015-02-10 13:25:07

+0

感謝您的計劃A,@karthik也提到過去觸發器,計劃B我不知道該怎麼做,反正工作正常。 – stom 2015-03-24 10:02:00

相關問題