Uni.EsBDDRimborso History
Show minor edits - Show changes to output
December 11, 2007, at 02:59 PM
by
- Added lines 1-65:
(:title Basi di Dati esercizio rimborsi:)
[[Torna alla pagina di Basi di Dati->Basi di Dati]]
----
%center bgcolor=#fff0f5 border='1px solid #cccccc' font-size=12pt padding=3px define=soluzione%
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px%Query: Rimborsi
----
'''FONDO'''( Codice, Importo, DataErogazione, Scadenza, MatrTitolare)\\
'''DIPENDENTE''' (Matricola, Nome, Cognome, Posizione)\\
'''PARTECIPA''' (MatrDipendente, CodFonfo)\\
''''RIMBORSOSPESA '''(MatrDipendente, CodFondo, Data, Importo, Motivo)
----
!!%red%'''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
%soluzione%RS:=Π'_MatrDipendente, CodFondo, Data_' (RIMBORSOSPESA)
''duplico la tabella''
%soluzione%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''
%soluzione%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''
%soluzione%D:= RS - R
''siccome voglio nome e cognome del dipendente faccio un join tra D e DIPENDENTE proiettando le 2 colonne interessate''
%soluzione%RISULTATO:=Π'_Nome, Cognome_'(D |X| '_MatrDipendente=Matricola_' DIPENDENTE)
!!%red%'''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''
%soluzione%RS:= Π'_MatrDipendente, Importo, Motivo_' (RIMBORSOSPESA)
''da questa tabella seleziono le tuple che nella casella importo hanno un valore > 3000 euro''
%soluzione%R3000:= σ '_Importo>=3000_' RS
''sempre da quella tabella trovo le tuple che nella casella motivo hanno scritto viaggio aereo''
%soluzione%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''
%soluzione%RISULTATO:=(RS-RV)∩R3000
[[Torna alla pagina di Basi di Dati->Basi di Dati]]
----
%center bgcolor=#fff0f5 border='1px solid #cccccc' font-size=12pt padding=3px define=soluzione%
%center%%bgcolor=#d9e4f2 font-size=11pt padding=4px padding-left=50px padding-right=50px%Query: Rimborsi
----
'''FONDO'''( Codice, Importo, DataErogazione, Scadenza, MatrTitolare)\\
'''DIPENDENTE''' (Matricola, Nome, Cognome, Posizione)\\
'''PARTECIPA''' (MatrDipendente, CodFonfo)\\
''''RIMBORSOSPESA '''(MatrDipendente, CodFondo, Data, Importo, Motivo)
----
!!%red%'''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
%soluzione%RS:=Π'_MatrDipendente, CodFondo, Data_' (RIMBORSOSPESA)
''duplico la tabella''
%soluzione%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''
%soluzione%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''
%soluzione%D:= RS - R
''siccome voglio nome e cognome del dipendente faccio un join tra D e DIPENDENTE proiettando le 2 colonne interessate''
%soluzione%RISULTATO:=Π'_Nome, Cognome_'(D |X| '_MatrDipendente=Matricola_' DIPENDENTE)
!!%red%'''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''
%soluzione%RS:= Π'_MatrDipendente, Importo, Motivo_' (RIMBORSOSPESA)
''da questa tabella seleziono le tuple che nella casella importo hanno un valore > 3000 euro''
%soluzione%R3000:= σ '_Importo>=3000_' RS
''sempre da quella tabella trovo le tuple che nella casella motivo hanno scritto viaggio aereo''
%soluzione%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''
%soluzione%RISULTATO:=(RS-RV)∩R3000