Torna alla pagina di Basi di Dati
:: Basi di dati - Esercizio ::
Query: Calendari
CALENDARIO (Codice, Prezzo, Tipo, AnnoCalendario, CodiceProduttore)
PRODUTTORE (Codice,Nome, Indirizzo)
FOTOGRAFIA (Numero, NomeFotografo, MeseCalendario, CodiceCalendario)
Proietto le colonne Codice,Prezzo,CodiceProduttore selezionando solo le tuple che riguardano i calendari di tipo "da tavolo"
DT:=ΠCodice,Prezzo,CodiceProduttore (σ Tipo = 'da tavolo'(CALENDARIO))
Ne faccio una copia
DT2:=ρc,p,cp <- Codice,Prezzo,CodiceProduttore (DT)
individuo i calendari che costano di meno
MIN:=ΠCodiceProduttore, Codice(DT |X| CodiceProduttore= cp ^ prezzo<p DT2)
ora dal totale tolgo quelli che costano meno e trovo quello che costa di più
RISULTATO:= ΠCodiceProduttore, Codice (DT2) - MIN
innanzitutto trovo i calendari del 2003
ANNO2003:=ΠCodice (σ Anno=2003(CALENDARIO))
Poi trovo tutti i calendari che Sferrante non ha fatto
NOSFERR:=ΠCodiceCalendario (σ NomeFotografo≠'Sferrante'(FOTOGRAFIA))
ora faccio il join tra i calendari del 2003 e NOSFERR per trovare i calendari 2003 non fatti da lui
NS:=(NOSFERR |X| Codice=CodiceCalendario ANNO2003)
Dal totale dei calendari 2003 togliamo quelli non di Sferrante
RISULTATO:=ΠCodice (ANNO2003) - ΠCodice (NS)