Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Query per classifica

  1. #1

    Query per classifica

    Salve a tutti, sono un po' bloccato, asp + access
    Ho una tabella "utenti" con i dati anagrafici degli utenti di un sito
    Ho una seconda tabella "votiutenti" con i campi "ID, IDutente, IDvotante, data, voto
    Il voto è un valore numerico, ed è legato agli utenti mediante il campo "IDutente", tutto semplice
    Ma se volessi fare una classifica? dovrei fare il Join delle due tabelle e il SUm dei voti che hanno i vari utenti, per poi ordinarli in base alla media dei voti
    E' fattibile? Io non sono proprio in grado.
    Sarebbe semplice se mettere un campo "media voto" sulla tabella utenti, ma ho paura che se poi un utente si cancella la media viene errata.
    Qualcuno sa aiutarmi? Grazie!

  2. #2
    inizia a fare la JOIN, postala e la sistemiamo

  3. #3
    SOno messo molto male su join comunque ci provo

    codice:
    clsql = "SELECT * FROM utenti INNER JOIN votiutenti ON utenti.ID = votiutenti.IDutente ORDER BY utenti.ID"
    ma qui ho ordinato in base all'ID dell'utente..

  4. #4
    mmmmm, vado avanti
    per l'ordinamento in base alla media voti ho fatto la query

    codice:
    usql = "SELECT IDmiss, Count(*) As TOT, AVG(voto) AS MEDIA FROM votiutenti GROUP BY IDmiss ORDER BY AVG(voto) DESC"
    così ho raggruppato i record per "IDmiss" facendo la media dei voti e ordinato i record in base alla media voti

    Poi faccio un'altra interrogazione al database estraendo il nick della ragazza in base all'IDmiss appena estratto, così:

    codice:
    nsql = "SELECT ID, nick FROM utenti WHERE ID=" & urs("IDmiss")
    Però dovrei riuscire a unire le due query in qualche modo.

  5. #5
    codice:
    SELECT 
       TU.Nick,
       Count(TV.*) As TOT, 
       AVG(TV.voto) AS MEDIA 
    FROM 
       votiutenti TV JOIN utenti TU ON TV.IdMiss=TU.ID
    GROUP BY 
       TU.Nick
    ORDER BY 
       AVG(TV.voto) DESC
    fatta al volo, controlla che funzi

  6. #6
    grazie, ma così siu due piedi mi sembra errata perché raggruppata per "nick"
    ma deve essere raggruppata per "IDmiss", nick è solo uno, non lo si puà raggruppare
    ciao

  7. #7
    l'hai provata? e poi - da quello che hai postato

    nsql = "SELECT ID, nick FROM utenti WHERE ID=" & urs("IDmiss")

    nick e idmiss sono relazionati uno a uno

  8. #8
    mi da questo errore

    "[Microsoft][ODBC Microsoft Access Driver] Syntax error in query expression 'Count(TV.*)'."

    Io non ci capisco niente, non capisco neanche cosa sono TU e TV.........

  9. #9
    TV e TU sono degli alias per le tabelle votiutenti e utenti

    invece di Count(TV.*) usa Count(TV.voto)

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.