Estrarre valori unici per classifica

  • Creatore Discussione Creatore Discussione cosov
  • Data di inizio Data di inizio

cosov

Nuovo Utente
5 Feb 2007
17
0
0
Provincia di Milano
www.cosov.it
Salve, ho un gioco per bambini (MEMORY) sul sito che registra tutti i nomi dei giocatori, il tempo effettuato, la data e la tabella usata. Riesco a visualizzare i primi 10 della classifica, ma vorrei visualizzare per ogni giocatore solo 1 record, quello dove ha messo il minor tempo.

DATABASE ACCESS:
Tabella: MEMORY
Id - contatore
Giocatore - Nome del giocatore
Data - Data e ora di quando ha giocato
Tabella - Tabella usata

CLASSIFCA D'ESEMPIO:
1. Rossi Luca - Tempo 1.15.23 - 23/12/2008 - Tabella 2
2. Rossi Luca - Tempo 1.17.45 - 14/06/2008 - Tabella 4
3. Pepe Carlo - Tempo 1.18.02 - 12/01/2009 - Tabella 5
4. Rossi Luca - Tempo 1.22.04 - 15/07/2009 - Tabella 4
5. Ponti Mino - Tempo 1.28.35 - 23/08/2008 - Tabella 2

Vorrei con una SELECT poter visualizzare:
1. Rossi Luca - Tempo 1.15.23 - 23/12/2008 - Tabella 2
3. Pepe Carlo - Tempo 1.18.02 - 12/01/2009 - Tabella 5
5. Ponti Mino - Tempo 1.28.35 - 23/08/2008 - Tabella 2

Che sono solo i singoli giocatori col miglio tempo. E' possibile?... Grazie mille.
 
ciao..
select * from tabella.....ORDER BY nome_campo ASC
la query è semplice devi solo fare attenzzione a come salvi i dati in db.
Devi dare un'occhiata alla gestione delle date (e time) in asp.
:byebye:
 
Ciao, innanzitutto grazie dell'interessamento.
I valori delle date e del tempo sono a posto. Ripeto la classifica la fa, solo che non riesco a filtrare i nomi unici col minor tempo.

Tu mi hai scritto:
select * from tabella.....ORDER BY nome_campo ASC

ORDER BY non filtra, ma mette in ordine. Non serve anche una funzione DISTINCT o GROUP BY...?

Grazie mille.
 
Ultima modifica:
Ciao...scusami ma non avevo capito bene cosa ti servisse :-)
Già sai di cosa hai bisogno :-))) "DISTINCT o GROUP BY...?"
Group by non vedo come potrebbe servirti, visto che devi estrarre un valore univico (a meno che non rendi i valori man mano univoci, quindi ti ritroverai es 5 tempi univoci e li ordini in modo asc)
Distinct dotrebbe esserti utile ma adesso nn ricordo bene se estrae valori non ripetuti o se non mostra i valori ripetuti :-) Inizia a provare e se hai problemi posta la query...vediamo quello che si può fare.
Mal che va credo che potersti risolvere anche eseguendo un cotrollo ad ogni inserimento del tempo e rendere man mano i valori univoci o meno...quindi alla fine con una semplice query estrai quei valori e li oridini.
:byebye:
 
Dovresti fare un distinct, nel tuo caso sui nomi dei giocatori, visto che non usi il loro id...però potrebbe darti qualche problema in caso di omonimia...comunque:

sql= "select distinct(giocatore) as giocatore from tabella" e poi per ogni nome estratto:

quindi nel suo ciclo ad esempio while, avrai:

while not rs.eof then

sql2="select min(tempo) as minor_tempo from tabella where giocatore="&rs("giocatore")&" "

a questo punto dovresti avere il minor tempo per ogni singolo giocatore...

Questa dovrebbe essere la soluzione più semplice...anche se ci sono mille altri modi...
 

Discussioni simili