Ho dei dati relativi a delle automobili suddivisi in due tabelle:
1. la prima "automobili" contiene tutti i dati fissi come nome, marca ecc...
2. la seconda "dati_automobili" invece contiene i dati variabili nel tempo come cilindrata, potenza ecc...
Le due tabelle sono in relazione uno a molti.
La separazione dei dati mi serve per registrare ogni modifica (con un campo timestamp) e poter tracciare uno storico dei dati nel tempo.
Per avere solo gli ultimi dati aggiornati basta prendere la tabella automobili, il max(campo_timestamp) della tabella dati_automobili e fare la join. Il problema è quando aggiungo dei filtri, perchè cerca le corrispondenza indipendentemente dalla data .
Esempio: prendimi tutte le auto che hanno 90 cavalli .
Se per disgrazia c'è un'automobile che una volta aveva 90 cavalli, ma poi il dato è cambiato nel tempo, la query la tira fuori lo stesso perchè sembra dare la priorità al where, e poi al max(campo_timpestamp).codice:SELECT A.*, max(D.data_modifica_dati) FROM automobili as A INNER JOIN dati_automobili As D USING (id_automobile) WHERE D.potenza=90 GROUP BY A.id_automobile;
Io vorrei che cercasse il dato di 90 cavalli solo nell'ultimo record in ordine di tempo di dati_automobile esistente per ciascuna automobile: se un'auto oggi ha 91 cavalli, non mi deve comparire nei risultati, anche se un anno fa ne aveva 90.
In altre parole la consegna è: "prendimi tutte le auto che adesso hanno 90 cavalli ".
Spero di farmi capire.
Come risolvo?