Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    SQL trovare i 5 valori ripetuti più volte

    Ciao a tutti,
    sto cercando di fare una piccola pagina di statistiche d'accesso al sito, e vorrei estrapolare dal DB le 5 pagine più visitate, ho messo giù qualcosa ma c'è qualcosa che non va..

    sql = "SELECT TOP 5 pagina_visitata AS totaleRecord FROM (SELECT MAX(SELECT COUNT(pagina_visitata)) FROM statistiche)"

    un aiutino?

  2. #2
    che vuol dire "c'è qualcosa che non va"?

  3. #3
    Originariamente inviato da optime
    che vuol dire "c'è qualcosa che non va"?
    Ciao optime,
    il qualcosa che non va è questo errore che mi restituisce:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'MAX(SELECT COUNT(pagina_visitata))'.
    statistics_main.asp, line 85

  4. #4
    come è composta la tabella?

  5. #5
    Originariamente inviato da optime
    come è composta la tabella?
    ID | IP | ora | data | pagina_visitata |

    se faccio una semplice query per tirare fuori 5 valori casuali funziona:
    sql = "SELECT COUNT(ip) AS totaleRecord FROM (SELECT DISTINCT ip FROM statistiche)"

    ma vorrei avere la 5 pagine più viste, quindi quelle che si ripetono di più nel campo "pagina_visitata"
    Thanks!

  6. #6
    allora devi fare una COUNT(ID) con una GROUP BY (pagina_visitata)

  7. #7
    Perfetto!! Grazie optime!

    ecco la stringa completa:
    sql = "SELECT COUNT(ID), pagina_visitata AS totaleRecord FROM statistiche GROUP BY (pagina_visitata) ORDER BY COUNT(id) DESC"

    poi per ricavare solo 5 pagine ho messo un contatore nel ciclo "do while" :

    X = 1
    Do While NOT rs.EOF
    If X <= 5 then
    response.Write(rs("totaleRecord"))
    X = X + 1
    End If
    rs.MoveNext
    Loop


  8. #8
    Originariamente inviato da lapiadina
    poi per ricavare solo 5 pagine ho messo un contatore nel ciclo "do while" :
    se tua mamma ti dice: vai in cantina e riportami le 5 patate più grosse tu che fai? riporti in cucina 10 quintali di patate e poi lì scegli le 5 più grosse?

    TOP a cosa serve?

  9. #9

    è la prima cosa che è venuta in mente anche a me.. ma con TOP 5 ma restituiva più di 5 valori perchè alcune "pagine_visitate" avevano lo stesso COUNT, esempio

    Count()
    6
    4
    3
    2
    1
    1
    1
    1
    1

    quindi ne mostrava 9...
    scusa la mia ignoranza in materia..

  10. #10
    diciamo che con:

    sql = "SELECT TOP 5 COUNT(ID), pagina_visitata AS totaleRecord FROM statistiche GROUP BY (pagina_visitata) ORDER BY COUNT(ID) DESC"

    X = 1
    Do While NOT rs.EOF
    If X <= 5 then
    response.Write(rs("totaleRecord"))
    X = X + 1
    End If
    rs.MoveNext
    Loop

    non rischio di rimanere schiacciato sotto a 10 quintali di patate..
    grazie ancora!

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.