Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395

    select top 1 e inserimento database

    Cia a tutti,
    ho un problema che non riesco a risolvere con una sql e poi l'inserimento in un database.

    i dati vengono da due tabelle diverse
    codice:
    SQL = "SELECT punteggi.codiceGiocatore, Gare.CodiceCampo, punteggi.PuntiCO "
    SQL = SQL & "FROM punteggi INNER JOIN ["&percorsoserver&"].Gare ON punteggi.CodiceGara = Gare.CodiceGara "
    SQL = SQL & "WHERE punteggi.PuntiCO <> 0 "
    SQL = SQL & "ORDER BY punteggi.codiceGiocatore "
    tabella:
    codicegiocatore | punti | IDcampo
    1 | 100 | 50
    1 | 80 | 48
    1 | 50 | 48
    1 | 60 | 55

    da questa tabella dovrei prendere solo il miglior valore punti per ogni IDcampo quindi la tabella corretta sarebbe:
    1 | 100 | 50
    1 | 80 | 48
    1 | 60 | 55

    poi una volta fatto questo devo indicare se è il miglior valore allora faccio update N in una tabella se invece non è il miglior valore faccio update S.

    Il fatto è che non ho chiaro come devo strutturare le sql.

    Grazie
    Ultima modifica di ottoboni77; 29-04-2016 a 13:42

  2. #2
    per la graduatoria devi usare MAX() e GROUP BY. il discorso di Update N o Update S non l'ho invece capito...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    ok. faccio così ma mi da errore:

    prima controllo chi ha fatto più di due gare e se le ha fatte estraggo il punteggio massimo. una volta estratto il punteggio massimo faccio la sql di update per scarto N. qui funziona. ma appena faccio "else" per fare l'update in caso contrario, cioè dei risultati diversi dal punteggio massimo, va in errore. a fianco della riga ho messo (riga che va in errore).
    codice:
    SQL = "SELECT punteggi.codiceGiocatore, Count(Gare.CodiceCampo) AS contacampo, Gare.CodiceCampo "
    SQL = SQL & " FROM ["&percorsoserver&"].Gare INNER JOIN punteggi ON Gare.CodiceGara = punteggi.CodiceGara "
    SQL = SQL & "GROUP BY punteggi.codiceGiocatore, Gare.CodiceCampo "
    SQL = SQL & "ORDER BY punteggi.codiceGiocatore "
     Set contGare = Server.CreateObject("ADODB.Recordset")
     contGare.open SQL,FigspConn,3,1
     if not contGare.EOF then
      while not contGare.EOF
     
    if contgare("contacampo") => 2 then
    
    SQL = "SELECT punteggi.codiceGiocatore, Max(punteggi.PuntiCO) AS MaxDiPuntiCO, Gare.CodiceCampo "
    SQL = SQL & "FROM ["&percorsoserver&"].Gare INNER JOIN punteggi ON Gare.CodiceGara = punteggi.CodiceGara "
    SQL = SQL & "WHERE punteggi.codicegiocatore = '"&contGare("codicegiocatore") &"' "
    SQL = SQL & "AND gare.codicecampo = "& contGare("codicecampo") &" "
    'SQL = SQL & "AND punteggi.PuntiCO <> 0 "
    SQL = SQL & "GROUP BY punteggi.codiceGiocatore, Gare.CodiceCampo "
    SQL = SQL & "ORDER BY punteggi.codicegiocatore ASC "
     
     Set tGare = Server.CreateObject("ADODB.Recordset")
     tGare.open SQL,FigspConn,3,1
     
           sSql = ""
           sSql = sSql & "update Punteggi set ScartoPunti = 'N' "
           sSql = sSql & "where CodiceGiocatore='" & tGare("CodiceGiocatore") & "' "
           sSql = sSql & "AND puntiCO =  "&tGare("MaxDiPuntiCo")&" "
           set rs=FigspConn.execute (sSql) 
    else
    SQL = "SELECT punteggi.codiceGiocatore, punteggi.PuntiCO, Gare.CodiceCampo "
    SQL = SQL & "FROM ["&percorsoserver&"].Gare INNER JOIN punteggi ON Gare.CodiceGara = punteggi.CodiceGara "
    SQL = SQL & "WHERE punteggi.codicegiocatore = '"&contGare("codicegiocatore") &"' "
    SQL = SQL & "AND gare.codicecampo = "& contGare("codicecampo") &" "
    SQL = SQL & "AND punteggi.PuntiCO <> "&tGare("MaxDiPuntiCo")&" "  (riga che da errore!!)
    SQL = SQL & "ORDER BY punteggi.codicegiocatore ASC "
    
    'Response.Write "seconda sql...: " & SQL & "<br>"
    'Response.flush
     Set tGare = Server.CreateObject("ADODB.Recordset")
     tGare.open SQL,FigspConn,3,1
    'response.write tGare("codicegiocatore") & " | "
    'response.write tGare("MaxDiPuntiCO") & " | "
    'response.write tGare("codicecampo") & " <br> "
    'response.flush
           sSql = ""
           sSql = sSql & "update Punteggi set ScartoPunti = 'S' "
           sSql = sSql & "where CodiceGiocatore='" & tGare("CodiceGiocatore") & "' "
           sSql = sSql & "AND puntiCO =  "&tGare("MaxDiPuntiCo")&" "
           set rs=FigspConn.execute (sSql) 
    end if
       contGare.MoveNext
      wend   
     end if
    solo che non capisco come fare l'else in caso contrario al punteggio massimo.
    Perché può capitare che il numero di gare è 3 o 4 e quindi devo impostare scartopunti a N solo al punteggio massimo.

  4. #4
    se facessi anche lo sforzetto di dire che errore ti da'....

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    Già.... sarebbe stata un'ottima idea.....

    l'errore error '80020009'

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    in sostanza...
    verifico se il giocatore ha fatto più di due gare sullo stesso campo.
    se ha fatto più di due gare allora il valore massimo non lo scarto (da qui la sql di update con scartopunti = N) altrimenti scarto i rimanenti risultati di quel campo (da qui la sql di update con scartopunti = S)

  7. #7
    solo il numero dell'errore? non c'è anche una descrizione? 80020009 è troppo generico https://www.google.it/#q=asp+classic+80020009

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 © 2024 vBulletin Solutions, Inc. All rights reserved.