Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Un problema di query in Access
lunedì 30 agosto 2010 - 12.55
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Access (.mdb)
purplepurple
Profilo
| Newbie
11
messaggi | Data Invio:
lun 30 ago 2010 - 12:55
Buongiorno a tutti,
avrei un problema su come chiedere ad access (2003) l'estrapolazione di alcuni dati da due diverse tabelle (per la gestione di un registro voti)e che cercherò di spiegare qui di seguito:
ho una tabella con i seguenti campi: IdNome;Nome;/....altri dati anagrafici; e una tabella che contiene le materie e i relativi voti con i seguenti campi: IdNome;materia; voto1;voto2;voto3;voto4;media.
Quello che vorrei cercare di ottenere è una tabella riassuntiva che mi dia - per ogni nome selezionato - la corrispondente media per ogni materia e la media generale, relativa cioè alla somma delle medie per materia diviso il numero di materie.
Un'altro degli ostacoli che ho trovato riguarda appunto il numero delle materie e le relative medie e cioè (per esempio):
MediaMateria1= 8; MediaMateria2= 7; MediaMateria3= 0 (che sta a significare "non ancora valutato"). In questo caso la media generale non può essere ottenuta dividendo la somma dei voti per 3 perchè, essendoci una materia non ancora verificata, ne risulterebbe una media falsata; quindi bisognerebbe dire ad access che deve dividere (in questo caso) solo per 2.
Questo è tutto. Spero di essermi fatto capire e, nella speranza che Qualcuno di voi possa venirmi in aiuto, vi auguro una buona giornata e un buon fine agosto.
Giampaolo
Ps: un piccolo esempio pratico sarebbe di grande conforto alla mia ignoranza.
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
lun 30 ago 2010 - 14:52
1432_dbStudents.zip
Ciao
Mi approccio in maniera differente con 3 Tabelle:
1. Studenti
IDStudente - Nome - Cognome
2. Materie
IDMateria - Materia
3. Voti
IDVoto - IDStudente - IDMateria - Voto - Data
e con questa query:
SELECT Studenti.IDStudente, Studenti.Nome, Materie.Materia, Sum(Voti.Voto) AS SommaDeiVoti, Count(Voti.Voto) AS NumeroDiVoti, Sum(Voti.Voto)/Count(Voti.Voto) AS Media
FROM Studenti INNER JOIN (Materie INNER JOIN Voti ON Materie.IDMateria = Voti.IDMateria) ON Studenti.IDStudente = Voti.IDStudente
GROUP BY Studenti.IDStudente, Studenti.Nome, Materie.Materia;
Risolvo tutto.
Se poi voglio filtrare per Studente aggiungo la clausola WHERE IDStudente = ?
Ti allego progettino.
Ciao
alexmed
purplepurple
Profilo
| Newbie
11
messaggi | Data Invio:
lun 30 ago 2010 - 20:14
Grazie tante per la cortese e rapidissima risposta; ho visto l'esempio che hai allegato e direi che, ignoranza permettendo, dovrei riuscire ad adattare alle mie esigenze. Devo vedere adesso come conciliare il tutto con le maschere che ho già fatto e che devono rispettare un layout obbligato.
Ciao, e ancora grazie.
PS: lo stemma dei 4 mori sta ad indicare che sei sardo? Io si.
doppio PS: dimenticavo, hai anche una soluzione per la seconda parte del quesito, quella che riguarda la media generale? (somma delle medie di tutte le materie diviso per il numero delle materie - escludendo ovviamente quelle uguali a 0)
Ri-grazie
alexmed
Profilo
| Guru
1.186
messaggi | Data Invio:
lun 30 ago 2010 - 22:37
La query dovrebbe essere così:
SELECT Studenti.IDStudente, Studenti.Nome, Sum(Voti.Voto) AS SommaTotaleDeiVoti, Count(Materie.Materia) AS NumeroTotaleDiVoti, Sum(Voti.Voto)/Count(Materie.Materia) AS Media
FROM Studenti RIGHT JOIN (Materie INNER JOIN Voti ON Materie.IDMateria = Voti.IDMateria) ON Studenti.IDStudente = Voti.IDStudente
GROUP BY Studenti.IDStudente, Studenti.Nome;
Prova e fammi sapere
Ciao
alexmed
PS.
Eia ... sono di origini campidanesi.
purplepurple
Profilo
| Newbie
11
messaggi | Data Invio:
mar 31 ago 2010 - 17:14
Funziona! Grazie tante per la disponibilità.
Giampaolo.
PS: Io sono di Iglesias. Ciao
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !