Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: somma con ASP

  1. #1

    somma con ASP

    Ciao a tutti,
    volevo sapere come fare per creare la somma dei valori presenti un una tabella di un db... cerco di spiegarmi meglio...:

    allora... effettuo una query sul db e mi stampa a video questi valori:

    Utente: 1 Punti: 12
    Utente: 1 Punti: 10
    Utente: 2 Punti: 9
    Utente: 3 Punti: 21
    Utente: 2 Punti: 5
    Utente: 1 Punti: 10

    come faccio ad avere un risultato del genere? :

    Utente: 1 Punti: 32
    Utente: 2 Punti: 14
    Utente: 3 Punti: 21

    in poche parole dovrebbe raggruppare e sommare i dati per il tipo di utente...
    ....

    in codice che uso è il seguente...:

    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    
    <%
    Dim Recordset1
    Dim Recordset1_numRows
    
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_connessione_calcolo_STRING
    Recordset1.Source = "SELECT * FROM calcolo"
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()
    
    Recordset1_numRows = 0
    %>
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index
    
    Repeat1__numRows = 10
    Repeat1__index = 0
    Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    <% 
    While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
    %>
      Utente: <%=(Recordset1.Fields.Item("id_giocatore").Value)%> Punti: <%= Abs((Recordset1.Fields.Item("punti").Value)) %>
    
          <% 
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      Recordset1.MoveNext()
    Wend
    %>
    
    
    </body>
    </html>
    <%
    Recordset1.Close()
    Set Recordset1 = Nothing
    %>
    vi ringrazio per la collaborazione...
    ciao

  2. #2
    basta fare la query corretta

    select id_giocatore, count(punti) as punteggio from calcolo group by id_giocatore

    Provala prima direttamente sul database

    ciao

  3. #3
    ORA IL CODICE è QUESTO:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    
    <%
    Dim Recordset1
    Dim Recordset1_numRows
    
    Set Recordset1 = Server.CreateObject("ADODB.Recordset")
    Recordset1.ActiveConnection = MM_connessione_calcolo_STRING
    Recordset1.Source = "SELECT id_giocatore, count(punti) AS punteggio FROM calcolo GROUP BY id_giocatore"
    Recordset1.CursorType = 0
    Recordset1.CursorLocation = 2
    Recordset1.LockType = 1
    Recordset1.Open()
    
    Recordset1_numRows = 0
    %>
    <%
    Dim Repeat1__numRows
    Dim Repeat1__index
    
    Repeat1__numRows = 10
    Repeat1__index = 0
    Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
    %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    <% 
    While ((Repeat1__numRows <> 0) AND (NOT Recordset1.EOF)) 
    %>
      Utente: <%=(Recordset1.Fields.Item("id_giocatore").Value)%> Punti: <%= Abs((Recordset1.Fields.Item("punti").Value)) %>
    
          <% 
      Repeat1__index=Repeat1__index+1
      Repeat1__numRows=Repeat1__numRows-1
      Recordset1.MoveNext()
    Wend
    %>
    
    
    </body>
    </html>
    <%
    Recordset1.Close()
    Set Recordset1 = Nothing
    %>
    ma riporta questo errore...:

    ADODB.Fields (0x800A0CC1)
    Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.
    calcolo.asp, line 36


    che devo fare?

    grazie per l'aiuto....

  4. #4
    Originariamente inviato da GiuseppeCritell

    ADODB.Fields (0x800A0CC1)
    Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al numero richiesto.
    calcolo.asp, line 36

    che devo fare?
    guarda la query e i campi che tiri fuori e capirai l'errore.

    Al posto di
    codice:
    Utente: <%=(Recordset1.Fields.Item("id_giocatore").Value)%> Punti: <%= Abs((Recordset1.Fields.Item("punti").Value)) %>
    devi scrivere
    codice:
    Utente: <%=(Recordset1.Fields.Item("id_giocatore").Value)%> Punti: <%= Abs((Recordset1.Fields.Item("punteggio").Value)) %>
    perchè la query
    SELECT id_giocatore, count(punti) AS punteggio FROM calcolo GROUP BY id_giocatore
    restiruisce i campi id_giocatore e punteggio

  5. #5
    Ti ringrazio,
    ma ora mi da come esito:

    Utente: 1 Punti: 3
    Utente: 2 Punti: 2
    Utente: 3 Punti: 1

    a quanto vedo non mi fa la somma dei valori ma la somma del n° dei record presenti...

    Utente: 1 Punti: "32" (per un totale di 3 recod)
    Utente: 2 Punti: "14" (per un totale di 2 recod)
    Utente: 3 Punti: "21" (per un totale di 1 recod)

    come posso risolvere?

    grazie per il tuo prezioso aiuto...

  6. #6
    scusa

    nella query al posto di count metti sum

  7. #7
    perfetto... ti ringrazio.. sei stato gentilissimo...
    (non avevo confidenza con questi calcoli... ora ne so di +...)
    grazie grazie grazie...

    ps: che altre funzioni... tipo sum, count, .... esistono?

    grazie ancora... ciao

  8. #8
    cerca aggregate function su google oppure guarda qui


  9. #9
    come faccio per filtrare i dati... con il comando WHERE?

    ho provato così, ma non va...:

    codice:
    <%
    Dim caserta__MMColParam
    classifica__MMColParam = "1"
    If (Request.QueryString("id") <> "") Then 
      classifica__MMColParam = Request.QueryString("id")
    End If
    %>
    <%
    Dim classifica
    Dim classifica_numRows
    
    Set classifica = Server.CreateObject("ADODB.Recordset")
    classifica.ActiveConnection = MM_connessione_calcolo_STRING
    classifica.Source = "SELECT nome_giocatore, sum(valore_contratto) AS punteggio  FROM contratti GROUP BY nome_giocatore  ORDER BY sum(valore_contratto) DESC WHERE id = MMColParam"
    classifica.CursorType = 0
    classifica.CursorLocation = 2
    classifica.LockType = 1
    classifica.Open()
    
    classifica_numRows = 0
    %>
    c'è rimedio?

    grazie tante...

  10. #10
    hai sbagliato la sintassi della select
    prima va il where con le varie opzioni e poi group by e order by

    versione 1 se MMColParam è una variabile parametrizzata
    "SELECT nome_giocatore, sum(valore_contratto) AS punteggio FROM contratti WHERE id = " & MMColParam & " GROUP BY nome_giocatore ORDER BY sum(valore_contratto) DESC "

    ti conviene scrivere in questo modo almeno controlli che la variabile non sia vuota altrimenti va in errore la query

    codice:
    dim sSQL
    sSQL="SELECT nome_giocatore, sum(valore_contratto) AS punteggio  FROM contratti "
    if MMColParam<>"" then
    sSQL=sSQL & " WHERE id = " & MMColParam
    end if
    sSQL=sSQL & " GROUP BY nome_giocatore  ORDER BY sum(valore_contratto) DESC "
    
    classifica.Source=sSQL

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.