Soluzione Verifica Query 3H – 2017
VERIFICA INFORMATICA
Dato il seguente schema relazionale
calciatori(idCalciatore, nome, cognome, ruolo, età, squadra)
risultati(idRisultato, idCalciatorecalciatori, goalFatti, squadraInCasa, squadraFuoriCasa)
realizzare le seguenti query in SQL:
QUERY DI SELEZIONE
1. Visualizzare nome, cognome e goalFatti in ogni partita dai calciatori della Juventus
SELECT calciatori.nome, calciatori.cognome, risultati.goalFatti
FROM calciatori, risultati
WHERE calciatori.idCalciatore=risultati.idCalciatore AND calciatori.squadra=”Juventus”
2. Visualizzare i goalFatti in casa dalla Juventus
SELECT SUM(goalFatti)
FROM risultati
WHERE squadraIncasa=”Juventus”
QUERY DI RAGGRUPPAMENTO
3. Per ogni giocatore visualizzare il numero di goal fatti in campionato
SELECT idGiocatore, SUM(goalFatti)
FROM risultati
GROUP BY idCalciatore
4. Per ogni squadra visualizzare la classifica dei goal fatti in casa
Soluzione 1
SELECT calciatori.squadra, SUM(risultati.goalFatti) AS GOALfattiInCasa
FROM risultati, calciatori
WHERE calciatori.squadra=risultati.squadraInCasa
GROUP BY calciatori.squadra
ORDER BY GOALfattiInCasa AS DESC
Soluzione 2
SELECT squadraInCasa, SUM(goalFatti) AS GoalFattiInCasa
FROM risultati
GROUP BY squadraInCasa
ORDER BY goalFattiInCasa AS DESC
5. Come è possibile gestire la classifica dei goal fatti da ogni squadra (sia in casa che fuori casa)
Progettazione
Per generare la classifica dei goal fatti da ogni squadra occorre raggruppare i calciatori per squadra e in ogni raggruppamento formato sommare i goal fatti da ogni giocatore. Dovendo ricavare le informazioni da entrambe le tabelle occorre realizzare un legame (JOIN) fra il campo idCalciatori della tabella calciatori (PK) e idCalciatori della tabella risultati (FK).
I campi squadraInCasa e squadraFuoriCasa della tabella risultati sono ridondanti.
Realizzazione
SELECT calciatori.squadra, SUM(risultati.goalFatti) AS goalFatti
FROM calciatori, risultati
WHERE calciatori.idCalciatore=risultati.idCalciatore
GROUP BY calciatori.squadra
ORDER BY goalFatti AS DESC