Det finns två grundläggande metoder för att göra detta:närliggande listor och kapslade listor. Ta en titt på Hantera hierarkisk data i MySQL .
Vad du har är en angränsande lista. Nej, det finns inte ett sätt att rekursivt fånga alla avkomlingar med en enda SQL-sats. Om möjligt, ta bara tag i dem alla och mappa dem alla i kod.
Kapslade uppsättningar kan göra vad du vill, men jag tenderar att undvika det eftersom kostnaden för att infoga en post är hög och den är felbenägen.