non mi viene in mente niente usando l'sql
secondo me ti conviene fare una sola select sql per leggere il contenuto della tabella, poi ti crei una funzione ricorsiva in php che ti popola un albero (un array) secondo le tue esigenze. Probabilmente questa soluzione è meno dispendiosa di molte altre che implicano più query sql