Torna alla pagina di Basi di Dati
:: Basi di dati - Esercizio ::
Query: Rimborsi
FONDO( Codice, Importo, DataErogazione, Scadenza, MatrTitolare)
DIPENDENTE (Matricola, Nome, Cognome, Posizione)
PARTECIPA (MatrDipendente, CodFonfo)
'RIMBORSOSPESA (MatrDipendente, CodFondo, Data, Importo, Motivo)
1:Determinare per ciascun fondo, il nome ed il cognome dei dipendenti che hanno chiesto l'ultimo rimborso spesa''
''Della tabella RIMBORSOSPESA proietto solo le colonne che mi servono
RS:=ΠMatrDipendente, CodFondo, Data (RIMBORSOSPESA)
duplico la tabella
RS1:=ρ m,c,d, <- MatrDipendente, CodFondo, Data(RS)
ora faccio il join con RS per trovare le tuple che hanno la data + lontana per quanto riguarfìda lo stesso codice fondo
R:=ΠMatrDipendente, CodFondo, Data(RS1 |X|CodFondo=Codice ^ data<d RS)
dal totale tolgo le date + lontane e trovo la data odierna o comunque la più recente
D:= RS - R
siccome voglio nome e cognome del dipendente faccio un join tra D e DIPENDENTE proiettando le 2 colonne interessate
RISULTATO:=ΠNome, Cognome(D |X| MatrDipendente=Matricola DIPENDENTE)
2:Determinare la matricola dei dipendenti che hanno chiesto un rimborso spesa > 3000 euro e che non hanno mai chiesto un rimborso con motivazione viaggio aereo
Proietto le colonne che mi servono
RS:= ΠMatrDipendente, Importo, Motivo (RIMBORSOSPESA)
da questa tabella seleziono le tuple che nella casella importo hanno un valore > 3000 euro
R3000:= σ Importo>=3000 RS
sempre da quella tabella trovo le tuple che nella casella motivo hanno scritto viaggio aereo
RV:= σ motivo='viaggio aereo'RS
ora dal totale dil rimborso spese tolgo quelle che hanno come motivazione viaggio aereo. siccome voglio i rimborsi > di 3000 e che non sono viaggio aereo faccio l'inersezione
RISULTATO:=(RS-RV)∩R3000
Torna alla pagina di Basi di Dati