почитайте про nested sets — это техника позволяющая хранить древовидные структуры в БД так, что большинство выборок делаются в один SQL запрос.
en.wikipedia.org/wiki/Nested_set_model
Если кратко — то там к каждой записи добавляются еще два поля, которые потом и используют для выборок. Упрощается выборка но усложняется вставка.
Если сайт маленький и с nested sets разбираться не хочется (хотя весьма полезно, да и готовых реализаций полно), то можно сделать как угодно — начиная от рекурсивной выборки несколькими SQL запросами и до костыля с добавлением еще одного поля типа строка, в который прописывать «путь» к этому элементу в дереве (например айдишники узлов разделенные символом «0>12>45>») а потом делать выборку по этому полю используюя LIKE