Если вам нужен уровень single , вы должны выполнить SELECT с условием category_id = id OR parent_id = id
- но с MySQL вы не можете получить полное дерево одним запросом.
Вы можете написать хранимую процедуру, чтобы просмотреть все промежуточные результаты и выбрать дочерние элементы, но на самом деле это не очень аккуратно.
Вместо этого вы можете изменить дизайн своего стола. На сайте разработчиков MySQL есть хорошая статья о том, как вы можете хранить иерархические данные в таблице, и предоставляет дизайн, который намного более гибок, чем просто использование parent_id.