Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17
  1. #1

    SELECT TOP senza duplicati

    SELECT TOP 5 dato FROM tabella WHERE valido = True AND dato > 0 ORDER BY dato DESC"


    Chiedo al database di elencarmi i primi cinque utenti che hanno un valore (dato=X),
    essi vengono ordinati in base al valore di X.

    Il problema sussiste quando il valore X è uguale per diversi utenti in quanto vengono elencati oltre cinque record come da TOP richiesto.

    La query andrebbe ad elencare, ad esempio, tutti gli utenti con X=2, ancora quelli con X=1..... ma così non sono più i TOP diventano innumerevoli in relazione al valore numerico di X.

    Spero di essermi spiegato correttamente.

    PS
    Purtroppo non altre condizioni da all'licare alla QUERY, tipo ora o date.

    Grazie
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  2. #2
    provato con distinct?

    SELECT distinct TOP 5 dato FROM tabella WHERE valido = True AND dato > 0 ORDER BY dato DESC"

  3. #3
    Grazie, distinct va bene, solo che devo dargli almeno un dato tipo Orario per fargli ordinare gli utenti che lista, altrimenti mi esclude tutti quelli che hanno un dato uguale.

    Faccio qualche prova...
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  4. #4
    il problema è filosofico, non tecnico

    se io ho

    ID -- VALORE
    1 -- 5
    2 -- 5
    3 -- 5
    4 -- 5
    5 -- 5
    6 -- 4
    7 -- 4
    8 -- 4
    9 -- 4
    10 -- 2

    e chiedo di ottenere TOP 2 VALORE, *QUALI* records debbono essere estratti? come debbono essere trattati gli 'ex-aequo'?

    risolto questo problema 'filosofico', lo stratagemma tecnico poi lo si trova

  5. #5
    rSQL = "SELECT TOP 5 regione,sesso,login,contamessaggi FROM utenti WHERE valid = True AND contamessaggi > 0 ORDER BY contamessaggi DESC


    contamessaggi = numero dei messaggi inviati oggi

    La classifica estratta deve riportare i cinque utenti che hanno inviato più messaggi in ordine numerico.
    Se due ho più utenti hanno contamessaggi di uguale valore, TOP 5 non deve elencarli
    assieme, ma neanche escluderli, dovrebbe scegliere tra uno dei due o più valori uguali,
    in che modo?

    While Not oRs.EOF

    User 1
    User 2
    user 3
    user 4
    User 5

    oRs.MoveNext
    WEnd
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  6. #6
    Originariamente inviato da cristiano1972
    Se due ho più utenti hanno contamessaggi di uguale valore, TOP 5 non deve elencarli assieme, ma neanche escluderli, dovrebbe scegliere tra uno dei due o più valori uguali, in che modo?
    quindi se io e te abbiamo gli stessi messaggi, elenca te e non me? VVoVe: io protesto!!!

  7. #7
    gia proprio così...
    se 100 persone hanno gli stessi messaggi, diventa la TOP 100 non più la TOP 5,
    immagino che a quella query servano altri WHERE per fare una scelta tra valori uguali.

    Almeno che non esistano altri tipi di opzioni da aggiungere per estrarre delle graduatorie, io conosco solo TOP (numero), qualche consiglio prima di agire?
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  8. #8
    qualcosa del tipo

    100 - ciccio, gino e pino
    85 - nino, alfio e dodo
    70 - carlotto
    60 - bibo e dado


  9. #9
    Questa è proprio una buona idea
    non ci avevo pensato a questa possibilià.

    Tuttavia avrei bisogno di uno script esempio per applicare la tua soluzione.
    http://www.romagnamania.com
    Una community tutta gratis per chi ama la Romagna.

  10. #10
    Originariamente inviato da cristiano1972
    Questa è proprio una buona idea
    non ci avevo pensato a questa possibilià.

    Tuttavia avrei bisogno di uno script esempio per applicare la tua soluzione.
    ti scorri il recordset e memorizzi quelli con score uguale

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