ник: osmor
ПОскольку каждый следующий select в union имеет похожую структуру то можно такой запрос генерить динамически в зависимости от глубины дерева.
можно попытаться решать задачу с помощью функции... правда не уверен что будет быстрее.
В результате нужно получить именно запрос или можно рекордсет?
Можно добавить поле FullPath ,в которое через разделитель записывать все коды от корня до данной ветки (очень иногда полезно) особенно когда при выборе узла в дереве нужно показать все записи которые лежат ниже узла (т.е. все дочерние) я обычно так и делал.