[risolto] aiuto integrazione query per db calcistico

aleweb74

Nuovo Utente
19 Nov 2013
2
0
0
Salve a tutti,
ho un db (mysql) calcistico da cui devo ricavare una classifica (con squadre ordinate per punteggio).

La tabella delle partite e' fatta cosi' (ho riportato solo i campi di interesse):

campionati:
squadra_casa
id_squadra_casa
gol_casa
squadra_ospite
id_squadra_ospite
gol_ospite

tutto ha funzionato bene con questa query...:

select squadra, id_squadra,
count(id_squadra) as giocate,
sum(if(punteggio=3,1,0)) as vittorie,
sum(if(punteggio=1,1,0)) as pareggi,
sum(if(punteggio=0,1,0)) as sconfitte,
sum(punteggio) as punti,
sum(fatti) as gol_fatti,
sum(subiti) as gol_subiti
from
(
select squadra_casa as squadra, id_squadra_casa as id_squadra, gol_casa as fatti, gol_ospite as subiti,
case
when gol_casa > gol_ospite then 3
when gol_casa = gol_ospite then 1
else 0
end as punteggio
from campionati where gol_casa is not null
union all
select squadra_ospite as squadra, id_squadra_ospite as id_squadra, gol_ospite as fatti, gol_casa as subiti,
case
when gol_ospite > gol_casa then 3
when gol_ospite = gol_casa then 1
else 0
end as punteggio
from campionati where gol_casa is not null
) as tab
group by id_squadra
order by punti desc

...finche' non e' sorto il problema dei punti di penalizzazione
ho creato quindi una tabella penalizzazioni fatta cosi':

penalizzazioni:
id_squadra
squadra
puntipen

(dove puntipen e' gia' il totale dei punti di penalizzazione che ha accumulato ciascuna squadra)

come faccio ad integrare questa informazione nella query di partenza in modo che comunque il punteggio tenga conto dei punti di penalizzazione e restituisca un ordine di classifica corretto?
Credo sia una cosa facile facile ma mi sono infognata, ogni prova mi ha dato errore... c'e' anche da dire che l'sql non e' esattamente la mia specialita'...

Grazie a chi vorra' aiutarmi!
 
Ciao,
prova così:

Select A.*, B.PUNTIPEN from (
select squadra, id_squadra,
count(id_squadra) as giocate,
sum(CASE WHEN punteggio=3 THEN 1 ELSE 0 END) as vittorie,
sum(CASE WHEN punteggio=1 THEN 1 ELSE 0 END) as pareggi,
sum(CASE WHEN punteggio=0 THEN 1 ELSE 0 END) as sconfitte,
sum(punteggio) as punti,
sum(fatti) as gol_fatti,
sum(subiti) as gol_subiti
from
(
select squadra_casa as squadra, id_squadra_casa as id_squadra, gol_casa as fatti, gol_ospite as subiti,
case
when gol_casa > gol_ospite then 3
when gol_casa = gol_ospite then 1
else 0
end as punteggio
from campionati where gol_casa is not null
union all
select squadra_ospite as squadra, id_squadra_ospite as id_squadra, gol_ospite as fatti, gol_casa as subiti,
case
when gol_ospite > gol_casa then 3
when gol_ospite = gol_casa then 1
else 0
end as punteggio
from campionati where gol_casa is not null
)
group by squadra, id_squadra
) A LEFT OUTER JOIN PENALIZZAZIONI B
ON A.ID_SQUADRA=B.ID_SQUADRA
order by punti desc



A quick solution is a shortcut to troubleshooting
HolidaySoft.it - Gestionali, Database, SitiWeb
GarganoSapori.it - Olio ExtraVergine del Gargano
OsteriaORistorante.it - Crea la Vetrina per il tuo Ristorante!
 
dopo un po' di smanettamenti ho risolto: avevo solo dimenticato una virgola :p
grazie a HolidaySoft.it che si e' voluto cimentare!!!!
 

Discussioni simili