Как реализовать иерархию директорий на php
Если надо получить именно бесконечное - т.е. целиком - то запрос как раз и будет один. 
А потом в скрипте сортировать.
А если только ветку - то никак. Список смежности для этого не подходит, надо хранить по-другому. Гуглить Nested Sets и Materialized path
Если дерево не перестраивается - годный вариант nested sets.
Если дерево перестраивается - наиболее годный вариант - materialized path + parent