Esistono due metodi di base per farlo:elenchi di adiacenza e elenchi nidificati. Dai un'occhiata a Gestione dei dati gerarchici in MySQL .
Quello che hai è un elenco di adiacenze. No, non c'è un modo per afferrare ricorsivamente tutti i discendenti con una singola istruzione SQL. Se possibile, prendili tutti e mappali tutti nel codice.
I set nidificati possono fare ciò che vuoi, ma tendo ad evitarlo perché il costo dell'inserimento di un record è elevato ed è soggetto a errori.