Ciao,
mi scuso che mi stavo perdendo il proseguo di questa discussione (non mi arrivano pi� le notifiche).
Si pu� dire che sono ricapitato qui solo ora e solo per caso perch� volevo rivedere alcuni passaggi della discussione.
Anche se la query di sspintux mi ha subito dato i risultati attesi, quella di badaze � pi� concisa.
Sull'aver usato le tabelle corsi_docenti e corsi_allievi è stata una mia leggerezza aver usato la descrizione del corso anzichè il suo ID. Posso rimediare perchè il progetto è in fase di studio.
Sulla struttura delle tabelle ha parzialmente ragione.
Infatti ho le 3 tabelle come da lui suggerito
La tabella corsi con ID e corso
La tabella corsi_docenti con ID, corso, id_insegnanti
La tabella corsi_allievi con ID, corso, id_allievo
(corso della seconda e terza tabella diventer� id_corso)
La seconda e terza tabella hanno un ID perchè ogni allievo ed ogni insegnante possono essere interessati a piïù corsi. Piïù insegnanti possono avere lo stesso corso se particolarmente affollato.
Questo fatto annulla la possibilità di sapere con quale insegnante ciascun allievo è associato. E' importante sapere a quale o quali corsi l'allievo è iscritto.
Per la Query mi sembra buona e l'ho subito testata, ma non è corretta per la terza colonna.
Se per la seconda colonna i risultati sono quelli attesi (1 1 1 1 1 2 2 1), la terza colonna ha dei valori non veritieri: mi restituisce 1 1 3 3 0 10 12 3 invece di 1 1 3 3 0 5 6 3.
Comunque grazie. Aspetto per sapere se la terza colonna può essere aggiustata.
![]()
@micdas.
per le tabelle alievi e docenti la chiave puo' essere composta da più di un campo. Per esempio se metti id_allievo e id_corso come chiave univoca non hai bisogno di id.
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
... ti precludi però la possibilità che un allievo possa ripetere un corso...
Per esempio se metti id_allievo e id_corso come chiave univoca non hai bisogno di id.
( ... ovviamente a meno di aggiungere un altro campo alla PK , tipo anno/semestre del corso)
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr
Ciao badaze
Sto riprogettando le due tabelle allievi e insegnanti mettendo anzichè la voce l'ID del corso a cui si fa riferimento.
Dopo di questo come occorre modificare la query per ottenere:
nome_corso
tot_allievi_iscritti
tot_insegnanti_iscritti
Infatti non capisco come due valorivengono raddoppiati
Invece di
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 5 TROMBA 2 6 VIOLINO 1 3
con la tua query ottengo
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 10 TROMBA 2 12 VIOLINO 1 3
Il primo risultato è quello esatto.
Se vuoi, visto che i nomi inseriti nelle tabelle sono fittizi, posso allegare i 3 sql relativi alle 3 tabelle in gioco senza violare la privacy degli iscritti memorizzati.
Ciao badaze
Sto riprogettando le due tabelle allievi e insegnanti mettendo anzichè la voce l'ID del corso a cui si fa riferimento.
Dopo di questo come occorre modificare la query per ottenere:
nome_corso
tot_allievi_iscritti
tot_insegnanti_iscritti
Infatti non capisco come due valorivengono raddoppiati
Invece di
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 5 TROMBA 2 6 VIOLINO 1 3
con la tua query ottengo
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 10 TROMBA 2 12 VIOLINO 1 3
Il primo risultato è quello esatto.
Se vuoi, visto che i nomi inseriti nelle tabelle sono fittizi, posso allegare i 3 sql relativi alle 3 tabelle in gioco senza violare la privacy degli iscritti memorizzati.
Ciao badaze http://forum.html.it/forum/images/smilies/ciao.gif
Sto riprogettando le due tabelle allievi e insegnanti mettendo anzichè la voce l'ID del corso a cui si fa riferimento.
Dopo di questo come occorre modificare la query per ottenere:
nome_corso
tot_allievi_iscritti
tot_insegnanti_iscritti
Infatti non capisco come due valorivengono raddoppiati
Invece di
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 5 TROMBA 2 6 VIOLINO 1 3
con la tua query ottengo
Corsi a staff ad allievi BATTERIA 1 1 CHITARRA CLASSICA 1 1 CHITARRA ELETTRICA 1 3 CONTRABBASSO 1 3 EDUCAZIONE MUSICALE 1 SASSOFONO 2 10 TROMBA 2 12 VIOLINO 1 3
Il primo risultato è quello esatto.
Se vuoi, visto che i nomi inseriti nelle tabelle sono fittizi, posso allegare i 3 sql relativi alle 3 tabelle in gioco senza violare la privacy degli iscritti memorizzati.
ciao
Secondo me è dovuto al fatto che TROMBA appare 2 volte nella tabella insegnanti (deve essere la stessa cosa per l'altra voce).
Se crei una tabella "corsi" non avrai più questo problema.
Select id_corso, desc_corso, sum(case when id_insegnante is null then 0 else 1 end) as tot_ins, sum(case when id_allievo is null then 0 else 1 end) as tot_all
from corsi C
left join corsi_docenti D on D.id_corso = C.id_corso
left join corsi_allievi A on A.id_corso = C.id_corso
Ridatemi i miei 1000 posts persi !!!!
Non serve a nulla ottimizzare qualcosa che non funziona.
Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr