Torna alla pagina di Basi di Dati
:: Basi di Dati: temi d'Esame
3 novembre 2006
AUTORE (ID Nome, Cognome)
ARTICOLO(ID, Titolo, NumPagine, NomeRivista, NumRivista, Data)
PUBBLICA (IDAutore, IDArticolo)
Seleziono Mario Rossi dalla tabella Autore e faccio il join con PUBBLICA per sapere l'ID dell'articolo che ha pubblicato
MR:=πIDArticolo(PUBBLICA |X|IDAutore=ID(σNome='Mario' ^ Cognome='Rossi'AUTORE)
Join tra MR e Articolo. Da questa tabella seleziono le tuple che hanno NumPagine >5 e ne proietto l nome rivista
RISULTATO:= πNomeRivista(σNumPagine>=5(MR |X|ID=IDArticoloARTICOLO))
Join tra PUBBLICA e ARTICOLO. Seleziono le tuple docve NumPagine >20 e ne proietto l'IDArticolo
PMA20:=πIDarticolo(σNumPagine>20(PUBBLICA|X|IDArticolo=IDARTICOLO))
Ora prendo l'IDArticolo di tutte le pubblicazioni
TUTTI:=πIDArticolo(PUBBLICA)
Ora tutti - quelli che hanno pubblicato + di 20 pagine
PMI20:=TUTTI - PMA20
Join tra coloro che hanno pubblicato meno di 20 pagine e AUTORE per proiettare nome e cognome
RISULTATO:=πNome, Cognome(PMI20 |X|IDAutore=IDAUTORE)
SELECT Nome,,Cognome
FROM Autore JOIN Pubblica ON ID=IDAutore
WHERE NomeRivista='ACM'
SELECT DISTINCT NomeRivista
FROM Articolo
WHERE Data BETWEEN 09/02/2004 AND 12/09/2006
GROUP BY NomeRivista
HAVING SUM(NumPagine)>=ALL