Ne sous-estimez pas le pouvoir du SQL :-).
J'ai peut-être rien compris mais ça me semble tout à fait faisable :
SELECT * FROM (SELECT c.*, b.*
FROM comments as c, blog as b
WHERE c.blog_id = b.blog_id
ORDER BY c.DATE DESC
) as temp
GROUP BY temp.blog_id
(testé avec MySQL5/InnoDB)
Note : j'ai mis des machin.* dans la requète imbriquée pour simplifier l'exemple mais, au-delà du fait que c'est mal, ça peut aussi faire foirer la requète si les deux tables ont un champ avec le même nom. Ça se corrige facilement en utlisant des alias ou en ne sélectionnant que les champs pertinents.