Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

aiuto mysql

46 views
Skip to first unread message

Alessandra Marino

unread,
Feb 17, 2024, 12:59:31 PM2/17/24
to
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


PS: ho messo max perché con la min selezionava la data errata, in questo modo seleziona la data più recente. Per il /30.25 e 365.25, l'insegnante faceva così durante il corso per la conversione mese e anno. Grazie ancora.

BFS

unread,
Feb 19, 2024, 4:57:55 AM2/19/24
to
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

Alessandra Marino

unread,
Feb 19, 2024, 5:08:03 AM2/19/24
to
salve, allora purtroppo le generalità come nome, cognome e nascita sono solo nella tabella generale, in tutte le altre tabelle è presente solo il codice fiscale. Poi per la conversione in mesi o anni durante il corso si è usata sempre la divisione per 365.25 o 30.25. Grazie ora riproverò con questa soluzione.
0 new messages