Somma se campo è uguale a precedente | SQL & MySQL

Topic: Pubblico - Composto da 2 Posts di 2 Utenti.

03 Novembre, 2011 00:38 #1
nik_90
Utente

nik_90
Registrato: Nov, 2011
Posts: 1
Offline

Ciao a tutti, premetto che sono alle prime armi con mysql,anzi primissime..:/
Ho un problema, mi trovo di fronte ad una tabella dove porta il conteggio dei goal fatti da giocatori di un torneo di calcetto.
(sito creato con joomla ed estensione per il campionato è JOOMSPORT)
Mi hanno chiesto di fare una classifica marcatori. Inizialmente sembrava andare tutto ok, ma alla seconda giornata, spunta il problema.
Praticamente il conteggio dei goal fatti viene fatto separatamente (viene quindi diviso in base al match disputato)
Mi spiego meglio. La tabella è simile a questa.

player_ID | match_id | ecount (GOAL FATTI) |

4 3 1
6 3 2
26 3 1
4 8 1
ecc ecc.....

non avendo per niente pratica come detto prima con i database, pre stilare la classifica ho fatto questo:
Il codice PHP che avevo scritto stilava la classifica prendendo ogni player_iD (poi conforntava il nome con un altra tabella, e lo inseriva) poi di fianco prendeva il valore di ecount(GOAL FATTI)
e passava al successivo player_id fino alla fine (con LIM 0,10)
infine il tutto è ordinato in da chi ha fatto più goal a chi ne ha fatti di meno..
Il problema è che alla seconda giornata mi sono ritrovato nella classifica due righe con lo stesso giocatore (in esempio player_id 4) e che in una riga c'era scritto che ha fatto 1 goal.. in quella di sotto che ne ha fatto un altro!!
Quindi il codice scritto non l'ho pensato per questo tipo di problema (che dovevo aspettarmi !! -.-"")

Io ora volevo sapere come posso fare per dire tramite una query magari di sommare e valori di ECOUNT per i PLAYER_ID con lo stesso valore?!?!? poi ovviamente nella riga successiva alla classifica non deve rimettermi lo stesso player_id?!

Ho girato un pò per il forum per cercare risposta, ma data la mia incompetenza e l'orario :) ho deciso di scrivere!

Scusate per le troppe parole!
Spero in un vostro aiuto!!
Salutii!!

07 Novembre, 2011 13:42 #2
darasc
Moderatore

darasc
Registrato: Jul, 2010
Posts: 64
Offline

Ciao nik_90,

per ottenere ciò che vuoi, cioè fare la somma dei gol per ogni giocatore, ordinarla e prendere in considerazione solo i primi 10, devi eseguire questa query sul database:

 1select player_id,sum(gol_fatti) as gol_totali
 2
 3from tabella
 4
 5group by player_id
 6
 7order by gol_totali DESC
 8
 9limit 10;

Infatti se ho capito bene nella tabella hai più volte lo stesso player_id con i gol che ha segnato per ogni partita.

Fammi sapere se la query può andar bene e/o ti servono altri chiarimenti.

Condividi su:

Loggati o Registrati per replicare