I would make a JOIN and sort the data after. Sort of:
SELECT articles.id, articles.text, articles.date, comments.id, comments.text, comments.date FROM articles LEFT JOIN comments ON (comments.article_id = articles.id) WHERE {some criteria} ORDER BY articles.date, comments.date
The performance problem with the additional comments that would be hidden is really minor - and you don't have the additional overhead of creating an ajax request to load other comments when they click the "see all" button - you can just hide them and then display them instantly .
If you only need the first 40 posts, you need to add this condition to the where clause (in fact, you could wrap any filtering you do):
WHERE articles.id IN (SELECT id FROM articles ORDER by articles.date LIMIT 40)
source share