2013-04-22 71 views
0

我正在使用C#和SQLite相當新。C#Visual Studio 2008 - SQLite更新循環

我需要通過將記錄字段「Value1」除以給定用戶和日期範圍的分母(第一個記錄日期爲spicific Date,例如2012-03-01)來更新記錄字段。

所以我需要遍歷數據集,如果用戶=約翰和日期< =比2012-03-01然後除以值1通過讓說,10

這顯然不能在SQL單獨爲已完成我需要知道Value1是什麼,以便我可以分解它。我會如何去做這件事?

下面是我所需要的數據由10

User | Date  | Value1 | Value2 | Value3 
---------------------------------------------- 
John | 2012-01-01 | *5 | 5  | 80 
John | 2012-02-01 | *10 | 78 | 60 
John | 2012-03-01 | *1 | 100 | 5 
John | 2012-04-01 | 5  | 89 | 55 
John | 2012-05-01 | 15 | 50 | 44 
Max | 2012-01-01 | 40 | 25 | 90 
Max | 2012-02-01 | 99 | 79 | 30 
Max | 2012-03-01 | 100 | 110 | 59 
Max | 2012-04-01 | 25 | 29 | 85 
Max | 2012-05-01 | 15 | 30 | 88 

修改

User | Date  | Value1 | Value2 | Value3 
---------------------------------------------- 
John | 2012-01-01 | *50 | 5  | 80 
John | 2012-02-01 | *100 | 78 | 60 
John | 2012-03-01 | *10 | 100 | 5 
John | 2012-04-01 | 5  | 89 | 55 
John | 2012-05-01 | 15 | 50 | 44 
Max | 2012-01-01 | 40 | 25 | 90 
Max | 2012-02-01 | 99 | 79 | 30 
Max | 2012-03-01 | 100 | 110 | 59 
Max | 2012-04-01 | 25 | 29 | 85 
Max | 2012-05-01 | 15 | 30 | 88 

修改後的數據劃分如果值1是恆定的話,我可以使用下面的代碼示例。但它is'nt,它會更新2012-01-01至2012-03-01值1都將5.

Value1 = 50 
Val = Value1/10 

sql_cmd = sql_con.CreateCommand(); 
sql_cmd.CommandText = "UPDATE Tablename SET Value1= '"+Val+"' WHERE User = 'John' and Date <= '2012-03-01'"; 
sql_cmd.ExecuteNonQuery(); 
+1

'「更新表名SET值1 =值1/10其中用戶='約翰'和日期<='2012-03-01'」;' – 2013-04-22 11:53:59

+1

羅傑你是一個明星....它的工作。我必須得到一本關於SQLite 3的書 – user2306859 2013-04-22 12:19:04

+0

Roger最後一次可以打擾你嗎?有沒有一種方法可以編輯SQL語句,以便它在「如果Value1 = 10」上顯示「on 2012-03-01」,然後「UPDATE Tablename SET Value1 = Value1/10 WHERE User ='John'and Date <='2012-03 -01' 「; – user2306859 2013-04-22 12:37:50

回答

0

你真的需要刷上你的SQL語法,但一般來說,如果你想要在UPDATE語句中的當前行中使用fileds,只需在UPDATE語句本身中輸入公式(或字符串函數或任何適用的內容)即可。

所以,你的榜樣,通過10特定行劃分Value1(或一組行):

UPDATE Tablename SET Value1 = Value1/10 WHERE User = 'John' and Date <= '2012-03-01' 

從您的最新評論上面,如果你需要額外的條件來選擇不同的行,放那些WHERE子句中:

UPDATE Tablename SET Value1 = 1 WHERE User = 'John' and Date <= '2012-03-01' and Value1 = 10 

所以,也許做一些閱讀有關SQL語法一般(這是一個大課題),然後重新發布有關語法任何具體問題。

+0

只會感謝羅傑 – user2306859 2013-04-22 13:38:08