/* PRENOTAZIONE ESAMI: INTERROGAZIONI CON PRODOTTI CARTESIANI E JOIN */ /* Prodotto cartesiano degli attributi Corso e DataEsame nella tabella Appello con l'attributo Matricola nella tabella Studente */ select Corso, DataEsame as Data_Esame, Matricola from Appello, Studente; /* Prodotto cartesiano della tabella Corso con se stessa */ select * from Corso, Corso; /* Prodotto cartesiano dell'attributo Codice di una copia della tabella Corso con l'attributo Nome di una seconda copia della tabella Corso */ select C1.Codice, C2.Nome from Corso C1, Corso C2; /* Riproduzione di Corso come prodotto cartesiano dell'attributo Codice di una copia della tabella Corso con l'attributo Nome di una seconda copia della tabella Corso */ select C1.Codice, C2.Nome from Corso C1, Corso C2 where C1.Codice = C2.Codice; /* Riproduzione di Corso come join di due copie di se stessa. */ select C1.Codice, C2.Nome from Corso C1 join Corso C2 on C1.Codice = C2.Codice; /* L`USO "NATURALE" DELL'OPERATORE JOIN E` RIPERCORRERE LA STRUTTURA DEI VINCOLI D`INTEGRITA` REFERENZIALE!!! */ /* Nomi dei corsi per cui e` indetto un esame (con duplicati) */ select Nome from Corso join Appello on Corso.Codice = Appello.Corso; /* Nomi dei corsi per cui e` indetto un esame (senza duplicati) */ select distinct Nome from Corso join Appello on Corso.Codice = Appello.Corso; /* Nome e Cognome degli studenti che sono iscritti ad un qualche appello. */ select distinct Nome, Cognome from Studente join Prenotazione on Studente.Matricola = Prenotazione.Studente; /* Nome e Cognome degli studenti che sono iscritti ad un qualche appello e Codice del corso relativo all'appello. */ select distinct Nome, Cognome, AppelloCorso from Studente join Prenotazione on Studente.Matricola = Prenotazione.Studente; /* Nome e Cognome degli studenti che sono iscritti ad un qualche appello e Nome del corso relativo all'appello. */ select distinct S.Nome, Cognome, Corso.Nome from ((Studente S join Prenotazione on S.Matricola = Prenotazione.Studente ) join Appello on Prenotazione.AppelloDataEsame = Appello.DataEsame and Prenotazione.AppelloCorso = Appello.Corso ) join Corso C on Appello.Corso = C.Codice; /* Nome e Cognome degli studenti che sono iscritti al corso di nome Analisi II. */ select distinct S.Nome, Cognome, Corso.Nome from ((Studente S join Prenotazione on S.Matricola = Prenotazione.Studente ) join Appello on Prenotazione.AppelloDataEsame = Appello.DataEsame and Prenotazione.AppelloCorso = Appello.Corso ) join Corso C on Appello.Corso = C.Codice where Corso.Nome = 'Analisi II';