Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Discussione: Somme in access

  1. #11
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    ok. grazie mille, la formula funziona alla perfezione.
    Un'unico "problema".
    Io tramite un'altra query mi faccio fare un totale per riga.
    Pensavo di creare la query che mi hai passato per far calcolare il totale (Select top 3) della colonna che mi estrae il totale sulla query che ho creato io.
    Però mi sono accorto che non funziona. Mi chiede di inserire il "valore colonna" manualmente.
    Se invece prova a fare dalla mia query che mi calcola il totale per riga una query di creazione tabella e poi "pescare" il totale riga da li funziona.

    E' un po' complicato ma spero tu possa aiutarmi

  2. #12
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da ottoboni77
    ok. grazie mille, la formula funziona alla perfezione.
    Un'unico "problema".
    Io tramite un'altra query mi faccio fare un totale per riga.
    Pensavo di creare la query che mi hai passato per far calcolare il totale (Select top 3) della colonna che mi estrae il totale sulla query che ho creato io.
    Però mi sono accorto che non funziona. Mi chiede di inserire il "valore colonna" manualmente.
    Se invece prova a fare dalla mia query che mi calcola il totale per riga una query di creazione tabella e poi "pescare" il totale riga da li funziona.

    E' un po' complicato ma spero tu possa aiutarmi
    Perdonami ma non ho capito niente.
    Se puoi mettere online un file o fare un esempio pratico magari riesco ad aiutarti.
    A domani.

  3. #13
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    sapevo che il discorso era un po' complicato....


    dalla tabella class_uomini tramite la query query_totale mi faccio creare la colonna totale con il totale per riga.
    volevo eseguire la tua funzione "prendendo" i dati del totale dalla Query_totale ma ciò non funziona.
    Sono riuscito a farlo funzionare creando una query di creazione taballa e poi pescare i dati da li.

    ti chiedo se c'è modo di pescare i dati (soprattutto la colonna totale) direttamente dalla query_totale.


    http://myfreefilehosting.com/f/75415b8098_4.03MB

    grazie mille

  4. #14
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Potresti convertirlo per essere compatibile con le versioni antecedenti ad office 2007?

  5. #15

  6. #16
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Perfetto. In ufficio non ho office 2007 e il compatibility pack su access non funziona.

    Ho dato una rapida occhiata (sto andando a pranzare )

    Se ho capito bene dovresti estrarre per ciascun gruppo (cioè numero di tessera) le 7 somme maggiori di puntipart e montepunti. E' così?

  7. #17
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    per ciascun gruppo dovrei estrarre solo la somma puntipart+montepremi+par(totale)

    praticamente io ho fatto una query che mi da il totale puntipart+montepremi+par.

    Una volta trovato il totale di questi ho bisogno di una query che mi estrae per ogni giocatore i 7 migliori totali (di quel giocatore).

  8. #18
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ti ho ricaricato il tuo db a cui ho apportato un paio di modifiche, visto che non era normalizzato ed era impossibile risolvere la query.

    http://myfreefilehosting.com/f/8151afe154_0.73MB

    Ti consiglio inoltre di rimuovere dalla tabella class_uomini il campo tessera visto che è già specificato nella tabella giocatori ed è quindi un'informazione ridondante che denormalizza la tua base di dati.

    Con questa query
    codice:
    SELECT giocatori.id, giocatori.tessera, totale
    FROM giocatori INNER JOIN [select class_uomini.id,class_uomini.id_giocatore,(puntipart+montepunti+par) as totale from class_uomini]. AS class_uomini 
    ON giocatori.id = class_uomini.id_giocatore
    WHERE class_uomini.id in (select top 7 id from class_uomini
    where class_uomini.id_giocatore = giocatori.id order by (puntipart+montepunti+par) desc,class_uomini.id)
    ORDER BY giocatori.id, class_uomini.totale DESC , class_uomini.id;
    ottieni il risultato desiderato.

    P.S. Spero che su una grosse mole di dati non crashi.

  9. #19
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    395
    una cosa non capisco....
    perchè hai dovuto inserire id_giocatore dalla class_uomini? Io vorrei tenere come riferimento tessera che poi mi va a pescare i dati del giocatore nella tabella giocatori.

    Inoltre ho notato che la query genera si il totale ma non per ogni giocatore bensì per ogni "riga" (solo i 7 migliori).
    E' possibile "raggruppare" anche per tessera/giocatore?

    Pensavo bastasse un GROUP BY ma non funziona.

  10. #20
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Originariamente inviato da ottoboni77
    per ciascun gruppo dovrei estrarre solo la somma puntipart+montepremi+par(totale)

    praticamente io ho fatto una query che mi da il totale puntipart+montepremi+par.

    Una volta trovato il totale di questi ho bisogno di una query che mi estrae per ogni giocatore i 7 migliori totali (di quel giocatore).
    Originariamente inviato da ottoboni77
    una cosa non capisco....
    perchè hai dovuto inserire id_giocatore dalla class_uomini? Io vorrei tenere come riferimento tessera che poi mi va a pescare i dati del giocatore nella tabella giocatori.

    Inoltre ho notato che la query genera si il totale ma non per ogni giocatore bensì per ogni "riga" (solo i 7 migliori).
    E' possibile "raggruppare" anche per tessera/giocatore?

    Pensavo bastasse un GROUP BY ma non funziona.
    Deciditi.
    Prima dici che ti servono per ogni giocatore i migliori 7 totali e la query che ti ho scritto fa esattamente quello.

    Se vuoi raggruppare per tessera/giocatore basta che fai un group by.
    codice:
    SELECT giocatori.id, giocatori.tessera, Sum(tab.totale) as somma
    FROM [SELECT giocatori.id, giocatori.tessera, class_uomini.totale
    FROM giocatori INNER JOIN [select class_uomini.id,class_uomini.id_giocatore,(puntipart+montepunti+par) as totale from class_uomini]. AS class_uomini ON giocatori.id = class_uomini.id_giocatore
    WHERE (((class_uomini.id) In (select top 7 id from class_uomini
    where class_uomini.id_giocatore = giocatori.id order by (puntipart+montepunti+par) desc,class_uomini.id)))
    ORDER BY giocatori.id, class_uomini.totale DESC , class_uomini.id]. AS tab
    GROUP BY giocatori.id, giocatori.tessera;
    La query per poter funzionare necessita che le tabelle siano strutturate in quel modo.
    A parte che senza fare così non è risolvibile (almeno non tramite sql, forse con vba) va anche detto che è buona norma quando si va a creare un join tra tabelle che il campo "comune" che le mette in relazione sia un valore numerico. Il tuo codice tessera è una stringa e anche in altri contesti renderebbe la query molto più lenta da eseguire (e questa query è già abbastanza pesante di suo, specialmente per un giocattolino come access).
    Una volta che ciascun giocatore è identificato da un codice univoco (1,2,3,ecc) non hai alcun problema a recuperare tutte le informazioni che vuoi (numero tessera, dati anagrafici e quant'altro).

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.