SELECT c.*, p.*
FROM clients AS c
JOIN programs AS p
ON p.id =
(
SELECT pi.id
FROM programs AS pi
WHERE pi.client_id = c.id
ORDER BY
pi.close_date=0 DESC, pi.close_date DESC
LIMIT 1
)
Grazie dovrebbe andare a @Quassnoi . Vedi la sua risposta in una domanda simile (ma più complicata):mysql-gruppo-per-visualizzare-ultimo-risultato
Se aggiorni i programs
tabella e imposta close_date
per tutti i record che è zero a close_date='9999-12-31'
, quindi il tuo ORDER BY
sarà più semplice (e l'intera query più veloce con indici appropriati):
ORDER BY
pi.close_date DESC