Non è affatto semplice, e potrei anche averla complicata più del necessario. Così però dovrebbe andare
codice:select pv.patient, p.name, pv.datavisita, stato from patients_visits pv join ( SELECT patient, max(datavisita)as datavisita FROM `patients_visits`groupby patient )as t1 on pv.patient = t1.patient and pv.datavisita = t1.datavisita left join patients p on pv.patient = p.id
Attenzione che i nomi delle colonne non corrispondono ai tuoi, e anche in patients_visits c'è una s in più