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
)
Merci d'aller à @Quassnoi . Voir sa réponse dans une question similaire (mais plus compliquée) :mysql-group-by-pour-afficher-le-dernier-résultat
Si vous mettez à jour les programs
table et définissez close_date
pour tous les enregistrements, il est de zéro à close_date='9999-12-31'
, puis votre ORDER BY
sera plus simple (et toute la requête plus rapide avec des index appropriés):
ORDER BY
pi.close_date DESC