Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179

    Estrarre da access solo nomi uguali e con minor punteggio

    Salve, ho un piccolo problema:
    Tabella con
    ID
    Nome
    Tempo
    Data

    Si tratta di un gioco tipo MEMORY dove viene registrato il nome del giocatore stesso, il tempo e la data di quando ha giocato.
    Volendo fare una classifica dei primi 10 procedo così:

    ...
    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT TOP 10 * FROM Gioco ORDER BY Tempo asc, Data asc, Nome asc "
    rs.Open strSQL, stringa

    ...

    La cosa funziona benissimo, solo che vorrei vedere in classifica SOLO nomi di giocatori diversi e col minor tempo. Esempio: se uno ha giocato 40 volte e ha fatto 40 tempi diversi deve essere visualizzato solo il tempo migliore.

    Ho provato così:

    ...
    Set rs = Server.CreateObject("ADODB.Recordset")
    strSQL = "SELECT TOP 10 * DISTINCT Nome FROM Gioco ORDER BY Tempo asc, Data asc, Nome asc "
    rs.Open strSQL, stringa

    ...

    NON FUNZIONA!l Tra l'altro so che si può mettere il valore MIN, ma non so dove...

    Qualcuno può aiutarmi. Grazie mille.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select top 10 nome, min(tempo) AS tempo_migliore
    from gioco
    group by nome
    order by min(tempo)

  3. #3
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Scusa, ma "Tempo_migliore" è una variabile che crea o devo averla già...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da osgb
    Scusa, ma "Tempo_migliore" è una variabile che crea o devo averla già...
    tempo_migliore è semplicemente un alias di tabella che mi sono inventato io per dare un nome alla colonna una volta che su di essa hai applicato una funzione di aggregazione come min() nel tuo caso. Puoi chiamarlo anche pippo o come ti pare.

  5. #5
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Ho provato, ma niente.
    Ho fatto così:
    '-----------------------------------------------------------------
    Set adoCon = Server.CreateObject("ADODB.Connection")

    strDB = "/mdb-database/Giochi.mdb"

    MM_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(strDB)

    adoCon.Open MM_Str

    Set rs = Server.CreateObject("ADODB.Recordset")

    strSQL = "select top 10 nome, min(Tempo) AS Tempo_migliore from Gioco group by Nome order by min(Tempo)"

    rs.Open strSQL, MM_Str
    ...
    <% do while not rs.EOF %>
    ...
    <%= rs("Concorrente") %>
    ...
    <%= rs("Tempo") %>
    ...
    <%= rs("Data") %>
    ...
    <%
    rs.MoveNext
    loop %>
    ...
    '-----------------------------------------------------------------

    Non riesco a capire dove sbaglio.
    Se si volesse fare una select tipo: "SELECT DISTINCT Nome From Giochi"
    Mi estrarrebbe tutti i nomi diversi dei giocatori, ma non gli altri campi,
    poi non so come inserire: "SELECT TOP 10 MIN(Tempo),Nome,Tempo,Data FORM Giochi ORDER BY Tempo,Nome"
    Mi estrarrebbe dalla select di prima solo il miglior tempo di ognuno.

    Non so se mi sono spiegato, ma faccio un esempio pratico:

    1. ROSSI CARLO Tempo: 1.43 Data: 23/11/09
    2. ROSSI CARLO Tempo: 2.04 Data: 24/11/09
    3. BIANCHI MARIO Tempo: 2.20 Data: 26/11/09
    4. BIANCHI MARIO Tempo: 3.10 Data: 26/11/09
    5. ROSSI CARLO Tempo: 5.40 Data: 28/11/09

    Deve uscire solo:

    1. ROSSI CARLO Tempo: 1.43 Data: 23/11/09
    3. BIANCHI MARIO Tempo: 2.20 Data: 26/11/09

    Perchè sono i migliori tempi di ogni persona.
    Spero di essere stato chiaro. Grazie ancora.

  6. #6

  7. #7
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Grazie della dritta, mi impegnerò, tanto non ho fretta, la classifica completa senza filtri funziona già.

    Ancora grazie e buona giornata.

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.