Ciao a tutti,
ho un problema dal quale non riesco a venirne fuori nonostante svariate prove.
Ho una tabella "Anagrafica" e una tabella "Assunzioni" dalle quali riesco a ricavarmi i dati anagrafici del dipendente e se lo stesso è attualmente assunto o dimesso.
La tabella "Assunzioni" può avere più righe e nello specifico una per ogni nuovo contratto o assunzione.
Per esempio:
Quindi riesco a capire se il dipendente è ancora operativo o dimesso dal fatto che ci sia oppure non la data di dimissione nel record con id più alto.
A tale scopo ho preparato una query che sarebbe questa:
ma la sotto query (quella interna alla if per capirci) funziona bene solo se nella tabella "Assunzioni" c'è solo una riga inerente il Dipendente.id, ma nel caso specificato sopra il record che ritorna è quello con la data di dimissione e quindi mi trovo con un risultato che non è quello aspettato.
Ho provato con GROUP BY, con ORDER BY, con LIMIT ma non riesco a fare in modo che mi ritorni il record corretto.
Chiedo quindi aiuto altrimenti ci perdo altri sei mesi
Grazie.
ho un problema dal quale non riesco a venirne fuori nonostante svariate prove.
Ho una tabella "Anagrafica" e una tabella "Assunzioni" dalle quali riesco a ricavarmi i dati anagrafici del dipendente e se lo stesso è attualmente assunto o dimesso.
La tabella "Assunzioni" può avere più righe e nello specifico una per ogni nuovo contratto o assunzione.
Per esempio:
1 | 18/06/2019 | Tempo determinato | 18/07/2019 |
2 | 25/09/2020 | Tempo indeterminato | NULL |
Quindi riesco a capire se il dipendente è ancora operativo o dimesso dal fatto che ci sia oppure non la data di dimissione nel record con id più alto.
A tale scopo ho preparato una query che sarebbe questa:
Codice:
SELECT * FROM Dipendenti d WHERE (Cognome LIKE '%%' OR Nome LIKE '%%')
AND Cooperative_Id = 1
AND if((SELECT max(id) From assunzioni a where a.dipendenti_id = d.id AND a.datadimissione IS not NULL LIMIT 1), 0, 1)
ORDER BY Cognome
ma la sotto query (quella interna alla if per capirci) funziona bene solo se nella tabella "Assunzioni" c'è solo una riga inerente il Dipendente.id, ma nel caso specificato sopra il record che ritorna è quello con la data di dimissione e quindi mi trovo con un risultato che non è quello aspettato.
Ho provato con GROUP BY, con ORDER BY, con LIMIT ma non riesco a fare in modo che mi ritorni il record corretto.
Chiedo quindi aiuto altrimenti ci perdo altri sei mesi
Grazie.