Il 17/02/2024 18:59, Alessandra Marino ha scritto:
> salve non riesco a risolvere questa query in modo corretto, mi prende la data corretta ma le generalità del dipendente e il reparto dove lavora me li riporta errati e non capisco il perchè. Volevo inoltre chiedere, se il dipendente in questione risulta deceduto dalla tabella generale, può influire con il risultato finale della query?. Grazie.
>
> #Considerando i dipendenti ancora in carica, si trovi quello che e' in carica da meno tempo. Si scrivano le generalità, il reparto dove lavora, la sua età e la durata del periodo lavorativo in mesi:
> select g.nome, g.cognome, g.codice_fisc, r.codice as reparto, round(datediff(d.data_assunzione,g.nascita)/365.25) as eta, max(d.data_assunzione) as ultimo_dip,
> round(d.data_assunzione/30.25) as mesi_lav
> from generale g, reparti r, dipendenti d
> where g.codice_fisc=d.codice_fisc and r.codice=d.reparto and d.data_dimissione is null
>
>
intanto :
round(datediff(d.data_assunzione,g.nascita)/365.25) as eta
non ha senso, ti da la differenza tra la data di nascita e quella di
quando è stato assunto...
poi non capisco perchè nome e cognome tu li prendi da generale e non da
dipendenti. in un db normalizzato tutti i dati del dipendente dovresti
averli in dipendenti
poi round(d.data_assunzione/30.25) as mesi_lav non ti da i mesi lavorati...
i mesi lavorati li hai facendo la differenza tra data odierna e data
assunzione specificando che vuoi il risultato in mesi
TIMESTAMPDIFF(MONTH,CURDATE(), d.data_assunzione);
> Per il /30.25 e 365.25, l'insegnante faceva così durante il corso per
la conversione mese e anno.
insegnante di cosa? non ha senso questa divisione "a caso"
BFS