Има два основни метода за това:списъци на съседство и вложени списъци. Разгледайте Управление на йерархични данни в MySQL .
Това, което имате, е списък на съседство. Не, няма начин за рекурсивно грабване на всички потомци с един SQL израз. Ако е възможно, просто ги вземете всички и ги картографирайте в код.
Вложените набори могат да правят каквото искате, но аз съм склонен да го избягвам, защото цената на вмъкването на запис е висока и е податлива на грешки.