select category.name, count(*) as "topics" from forum_topics topic left join forum_categories category on category.id = topic.category_id group by topic .category_id;
Если нужна вложенность - то сначала ищешь все category_id по которым нужен поиск а потом используешь where topic.category_id in (id1,id2...)