2012-03-13 91 views
0

我有一个网格视图,它使用SQL来计算我需要的信息!我想把这个计算出来的总数放到数据库的另一个表中。基于gridview值更新数据库

SELECT StaffDetails.StaffID, SUM(HolidayRequests.RequestTotalDays) AS Expr1 
FROM HolidayRequests INNER JOIN StaffDetails ON HolidayRequests.Username = StaffDetails.UserName 
WHERE (StaffDetails.StaffID = @staffID) 
GROUP BY StaffDetails.StaffID, HolidayRequests.ApprovalStatus 
HAVING (HolidayRequests.ApprovalStatus = N'approved') 

它基本上计算了一个正确的职员批准的假期请求的总数。每次假期获得批准时,我都希望使用此号码更新另一张表格中的HolidayTaken字段。

我已经尝试了更新,但是你不能在更新使用聚合,因为我已经找到...任何想法,我还能怎么做..

回答

2

你可以将执行的查询加载到“DataReader”或“DataSet”中,然后将信息加载到新表中。

你可以这样做:

SqlConnection conn = "You connection"; 
SqlCommand cmd = new SqlCommand(conn); 
cmd.CommandText = "YOUR QUERY"; 
SqlDataReader rdr = cmd.ExecuteReader(); 
String UpdateQuery; 

while (rdr.Read()) 
    { 
    UpdateQuery = "UPDATE table set [email protected] WHERE condition" 
    cmd.Parameters.AddWithValue("@Expr1", rdr["Expr1"].ToString()); 
    //run update query 
    cmd.CommandText = UpdateQuery; 
    cmd.ExecuteNonQuery(); 
    return; 
    } 
    cmd.Connection.Close(); 
+0

非常感谢这一点,你不明白它是如何帮助很大:) – user1055487 2012-03-16 22:23:53

1

试试这个

UPDATE StaffDetails a 
SET a.HolidayTaken = (SELECT SUM(HolidayRequests.RequestTotalDays) 
FROM HolidayRequests INNER JOIN StaffDetails b ON HolidayRequests.Username = b.UserName 
WHERE (b.StaffID = @staffID) 
GROUP BY b.StaffID, HolidayRequests.ApprovalStatus 
HAVING (HolidayRequests.ApprovalStatus = N'approved')) 
WHERE a.StaffID = @staffID