- Home
- Categorie
- Coding e Sistemistica
- MYSQL e altri Database
- Mysql funzione INSERT con subquery ramificata
-
Mysql funzione INSERT con subquery ramificata
Salve a tutti, premetto che non sono esperto di sql, stò realizzando un grosso database con mysql che collego a libreoffice, vi chiedo se qualcuno può gentilmente darmi una mano per un grosso problema che no riesco a risolvere.
Io vorrei fare questo... semplificando il concetto, ho due tabelle:
CORSO_SCOLASTICO_ALUNNO
con i seguenti campi
id_corso_scolastico (chiave primaria autoincrementante)
id_alunno
id_data_anno
Classe
SezioneSCRUTINI
con questi campi:
id_scrutinio (chiave primaria)
id_corso_scolastico
promosso
data_scrutinioIo vorrei dare una istruzione dove mi si vada cercare nella tabella SCRUTINI gli id_anno_scolastico che hanno l'anno della data_scrutinio uguale all'anno corrente, tra questi chi nel campo promosso ha valore "si" ed infine chi tra questi ha il valore della Classe < di 3, quindi inserire gli id_alunno relativi ad ogni corso scolastico trovato, nella tabella CORSO SCOLASTICO ALUNNO, oltre all'id_alunno mi dovrà anche inserire l'id_data_anno aumentato di 1, la Classe aumentata di 1 e la stessa Sezione.
L'Sql che avevo provato io era questa:
Codice: Seleziona tutto
INSERT INTO corso_scolastico_alunno (id_alunno, id_data_anno, Classe, Sezione) SELECT id_alunno, id_data_anno+1, Classe+1, Sezione FROM corso_scolastico_alunno WHERE Classe < '3' AND id_alunno IN (SELECT id_corso_scolastico FROM scrutini WHERE promosso = 'si' AND id_data_anno IN (SELECT id_data_anno FROM date_anni WHERE YEAR( data_scrutinio ) = YEAR( CURRENT_DATE )))però non mi funziona... ma io in sql non sono tanto esperto... c'è qualche anima buona che mi può aiutare? Se riesco a risolvere questo problema mi si spianerebbe di parecchio la strada per il database che stò realizzando....
Se non si capisse da quello che ho messo sopra, detto in parole povere io vorrei fare la ricerca di chi ha dato l'esame nell'anno corrente, poi trovare chi è stato promosso e tra tutti questi chi faceva la prima e la seconda classe, poi questi valori andrebbero a popolare la tabella del corso scolastico relativo all'anno prossimo (ecco perchè andrebbe messo id_data_anno +1), con il valore della Classe aumentato di uno (se faceva la 1 andra in 2 ecco perchè Classe +1) mentre la sezione sara riportata pari pari (se faceva la sezione A farà ancora la sezione A)
In pratica se un Alunno nel 2013 fa il corso scolastico con classe 1, sezione C, se verrà promosso il corso scolastico l'anno prossimo dovrà riportare anno 2014, classe 2, sezione C.
Linserimento dei nuovi corsi per i promossi dovranno riguardare chiaramente le classi 1 e 2 perchè i promossi delle classi 3 non faranno più la scuola media e quindi nessun nuovo corso scolastico ma andranno alle superiori.Riuscite a darmi una mano in questa cosa? Pleaseeeee
-
Scusate, ho trovato l'errore in una relazione errata delle tabelle.... ora funziona tutto l'sql e quindi con mysql è possibile realizzare funzioni INSERT che contengono subquery nidificate!