Il calcolo che viene eseguito è il punteggio totale realizzato dal calciatore diviso il numero di giornate giocate dal calciatore. ( punteggio / num_giornate )
Il punteggio e il numero giornate vengono calcolati con delle sotto select
Il problema avviene quando eseguo la divisione..mi spiego meglio con del codice:
- Codice: Seleziona tutto
SELECT
calciatore.id_calciatore as id,
calciatore.nome,
calciatore.cognome,
(select distinct count(formazione.id_giornata)
from
formazione
where
formazione.id_campionato = 1
and formazione.id_calciatore = id
and formazione.punteggio is not null) as n_giornate,
sum(formazione.punteggio) as punteggio,
( punteggio / n_giornate ) as media_voto
FROM
calciatore
LEFT OUTER JOIN formazione
ON formazione.id_calciatore = calciatore.id_calciatore
WHERE
formazione.id_campionato= 1
and calciatore.ruolo = 'A'
GROUP BY formazione.id_campionato,formazione.id_calciatore
ORDER BY media_voto DESC, cognome ASC
LIMIT 5
eseguendo questa query il compilatore mysql mi genera questo errore:
- Codice: Seleziona tutto
Unwknown column 'n_giornate' in 'field_list'
boh...non ho idea del motivo visto che la colonna è presente..
Visto che non ne uscivo ho trasformato la query in questo modo:
- Codice: Seleziona tutto
SELECT
calciatore.id_calciatore as id,
calciatore.nome,
calciatore.cognome,
sum(formazione.punteggio) as punteggio,
( punteggio / (select distinct count(formazione.id_giornata)
from
formazione
where
formazione.id_campionato = 1
and formazione.id_calciatore = id
and formazione.punteggio is not null) ) as media_voto
FROM
calciatore
LEFT OUTER JOIN formazione
ON formazione.id_calciatore = calciatore.id_calciatore
WHERE
formazione.id_campionato= 1
and calciatore.ruolo = 'A'
GROUP BY formazione.id_campionato,formazione.id_calciatore
ORDER BY media_voto DESC, cognome ASC
LIMIT 5
In questo modo il numero di giornate viene calcolato direttamente al momendo dellla divisione..
Ora la query funziona ma la divisione (operatore "/") mi ritorna risultati sbagliatissimi.
Avete qualche consiglio?