я бы сделал следующим образом (кратко)
categories: id, parent_id, ...; - таблица категорий
news: id, ...; - таблица новостей
news_categories: new_id, category_id; - связующая таблица
Затем рекурсивно вывести все дочерние категории. А там уже выводить новости из этих категорий.