Io parto dal presupposto che tu richiami la query conoscendo l'id del lavoro svolto
Questa dovrebbe andare
codice:
select l.*, t.* from lavori l left join tariffe t using(id_utente)
where abs(datediff(l.data, t.data)) =
(
select min(abs(datediff(l.data, t.data))) as datediff
from lavori l left join tariffe t using (id_utente)
where l.id_lavoro = 2
)
and l.id_lavoro = 2
L'unico problema è che se ci sono due giorni a distanza equivalente (ad esempio data lavoro 15/2, con una tariffa il 20 e una il 10) ti usciranno due righe