Dopo attenta valutazione delle richieste…
Schema E/R
SOTTOSCHEMI E QUERY
Un ente organizza corsi esterni che, insieme a quelli interni, sono attivati diverse volte…
Dato un corso, quali sono i dati relativi ad esso
SELECT * FROM CORSO WHERE Titolo = [Titolo del corso?]
Dato un corso, quali sono i dati relativi ad esso (+ dati corso esterno)
SELECT * FROM CORSO LEFT JOIN CORSOESTERNO ON CORSO.IDcorso = CORSOESTERNO.IDesterno WHERE Titolo = [Titolo del corso?]
ENTE_CORSOESTERNO: i dati dei corsi esterni
SELECT * FROM ENTE INNER JOIN CORSOESTERNO ON ENTE.IDente = CORSOESTERNO.IDesterno
Dato un corso, quali sono i dati relativi ad esso (+ corso esterno + ente). Risolve il problema del left join + inner join con la query ENTE_CORSOESTERNO
SELECT * FROM CORSO LEFT JOIN ENTE_CORSOESTERNO ON CORSO.IDcorso = ENTE_CORSOESTERNO.IDesterno WHERE Titolo = [Titolo del corso?]
Gli studenti frequentano una classe all’anno
Dato uno studente quali classi ha frequentato, in quali anni scolastici e con quali esiti finali
SELECT IDstudente, Cognome, Nome, Anno, Sezione, AnnoScolastico, Promosso, ConDebito, EsitoCompleto FROM CLASSE INNER JOIN STUDENTE_CLASSE ON CLASSE.IDclasse = STUDENTE_CLASSE.classeID INNER JOIN STUDENTE ON STUDENTE_CLASSE.studenteID = STUDENTE.IDstudente WHERE IDstudente = [Codice dello studente?] ORDER BY AnnoScolastico
Gli studenti frequentano i corsi attivati
…
SCHEMA RELAZIONALE / QUERY
Dato un anno scolastico, quali corsi interni sono stati attivati
SELECT Titolo, Descrizione, Tipo, MonteOre, Dal, Al FROM CORSO INNER JOIN ATTIVAZIONE ON CORSO.IDcorso = ATTIVAZIONE.corsoID WHERE (AnnoScolastico = [Anno scolastico?]) AND (IDcorso NOT IN (SELECT IDesterno FROM CORSOESTERNO)) ORDER BY Titolo
Dato uno studente, quali corsi ha frequentato, di che tipo, per quale monte ore e in quale anno scolastico
SELECT Titolo, Descrizione, Tipo, MonteOre, AnnoScolastico FROM STUDENTE_ATTIVAZIONE ... ATTIVAZIONE ... CORSO ... WHERE studenteID = [Codice studente?]
Data una classe, quali studenti di quella classe hanno frequentato corsi e di che tipo
SELECT Cognome, Nome, Titolo, Tipo FROM STUDENTE_CLASSE ... STUDENTE ... STUDENTE_ATTIVAZIONE ... ATTIVAZIONE ... CORSO ... WHERE classeID = [Codice classe?] ORDER BY Cognome, Nome
Dato un anno scolastico, quali corsi interni sono stati attivati e da quali studenti sono stati seguiti
SELECT Titolo, Descrizione, Tipo, Cognome, Nome, IDstudente FROM CORSO INNER JOIN ATTIVAZIONE ON CORSO.IDcorso = ATTIVAZIONE.corsoID WHERE (AnnoScolastico = [Anno scolastico?]) AND (IDcorso NOT IN (SELECT IDesterno FROM CORSOESTERNO)) ORDER BY Titolo,Cognome,Nome