Get row with max date from a joined table
A solution is to do an extra LEFT OUTER JOIN with 'newer pages', and filtering those with no newer pages:

SELECT d.*, p1.*
  FROM dossiers AS d
  INNER JOIN pages AS p1
    ON d.id = p1.dossiers_id
  LEFT OUTER JOIN pages AS p2
    ON d.id = p2.dossiers_id
   AND (p2.date &gt; p1.date OR (p2.date = p1.date AND p2.hour &gt; p1.hour))
  WHERE p2.id IS NULL


SQLFiddle