首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP 經典迴圈中累加變數顯示總計

     編輯:程式設計綜合問答

問題

ASP 頁面遍歷記錄集,需在迴圈外顯示 Score 總和(變數 news)。

修正代碼

<%
sql = "SELECT * FROM Accounts.dbo.view_2 WHERE IsAndroid = 0"
Set rs = Conn.Execute(sql)

news = 0 ' 初始化累加變數
If Not rs.EOF Then
    Do While Not rs.EOF
        userid = rs("USERID")
        Set rxsum = Conn.Execute("SELECT SUM(Score) FROM Accounts.dbo.View_3 WHERE userid=" & userid)
        score = rxsum(0)
        news = news + score ' 累加
%>
        <td><%=userid%></td>
        <td><%=rs("ACCOUNTS")%></td>
        <td><%=score%></td>
<%
        rs.MoveNext
    Loop
End If
%>
<td><%=news%></td> <!-- 迴圈外顯示總計 -->

關鍵修正點

  1. news = 0 在迴圈前初始化。
  2. news = news + score 在迴圈內累加。
  3. 總計顯示 <%=news%> 放在迴圈後(表格尾行),而非每行重複顯示。

效能優化建議

當前每行執行一條子查詢(N+1 問題)。建議改用單條 JOIN 查詢:

sql = "SELECT v2.USERID, v2.ACCOUNTS, ISNULL(SUM(v3.Score),0) AS TotalScore " & _
      "FROM Accounts.dbo.view_2 v2 " & _
      "LEFT JOIN Accounts.dbo.View_3 v3 ON v2.USERID = v3.userid " & _
      "WHERE v2.IsAndroid = 0 " & _
      "GROUP BY v2.USERID, v2.ACCOUNTS"

一次查詢獲取所有資料與總分,消除迴圈查詢,效能提升數量級。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved