Ciao a tutti,
ogni tanto devo tornare a chiedere aiuto.
Ho un database con diverse tabelle collegate tra loro e dovrei creare un report globale.
Pensavo di fare semplicemente con il JOIN ma vedo che non mi estrae tutte le informazioni che ci sono nelle varie tabelle.
La situazione e' questa:
Ho una tabella principale chiamata Dipendenti e una serie di altre tabelle che sono legate a questa.
Per esempio ho Assunzioni e VisiteMediche che sono legate direttamente a Dipendenti (Dipendenti.Id = Assunzioni.Dipendenti_Id e Dipendneti.Id = VisiteMediche.Dipendenti_Id), ma poi ho anche Livelli e TipiScadenze che sono legate ad Assunzioni (Assunzioni.Livelli_Id = Livelli.Id e Assunzioni.TipiScadenze_Id = TipiScadenze.Id) e ancora TipiScadenze che e' legata a VisiteMediche (VisiteMediche.TipiScadenze_Id = TipiScadenze_Id).
Poi ci sarebbero molte altre tabelle, ma credo che gia' con quelle che ho riportato si possa capire la problematica.
Tenendo presente che usando solo JOIN (LEFT, RIGHT e INNTER) non ho avuto i risultati sperati, come posso strutturare una query per poter estrarre tutti i dati di tutte le tabelle correlate tra loro?
Questa e' la query che ho scritto (limitata solo alle tabelle specificate sopra):
Grazie.SELECT d.Cognome, d.Nome, d.Indirizzo, d.Cap, d.Citta, d.Provincia,
a.DataAssunzione AS 'Data assunzione', a.DataDimissione AS 'Data dimissione', a.OreContratto AS 'Ore contratto', asv.Descrizione AS 'Tipo Scadenza', a.DataScadenza AS 'Data scadenza',
vm.DataVisita AS 'Data visita', vm.TipoVisita AS 'Tipo Visita', vss.Descrizione AS 'Scadenza visita'
FROM dipendenti d
RIGHT JOIN assunzioni a ON a.Dipendenti_Id = d.id
LEFT JOIN livelli l ON l.Id = a.Livelli_id
LEFT JOIN tipiscadenze asv ON asv.Id = a.TipiScadenze_Id
RIGHT JOIN visitemediche vm ON vm.id = d.id
LEFT JOIN tipiscadenze vss ON vss.id = vm.TipiScadenze_id
ORDER BY Cognome, Nome