Если вам в программе нужна иерархия, то нужно рекурсией выводить...
Но знайте — в 2018 году это не есть гуд, только если у вас немного категорий, если много и вы только-только проектируете БД, то сделайте через Nested Sets (изучать придется дольше, но работоспособность дикая)
По вопросу:
Если рекурсией — это делается на бекенде (например в PHP) написать функцию, которая вызывает саму себя и в каждой итерации будет к каждой категории записывать детей...
Запрос будет тогда максимально простым:
SELECT t.id, t.name
FROM test t
WHERE t.parent_id=2
ORDER BY t.parent_id
Забавно
Вчера помогал человечку на форуме Simpla CMS наоборот уйти от рекурсии, тк там 50 тысяч категорий и как раз проблема вылезла с рекурсией... почитайте о проблеме:
forum.simplacms.ru/topic/13311-%D0%BE%D0%B3%D1%80%...
При таких объемах данных — проблемы полезут сразу и на стороне запросов и на стороне бекенда