W sposób, w jaki zachowałeś drzewo teraz, nie jest możliwe uzyskanie całego drzewa w jednym czystym zapytaniu SQL. Aby pobrać drzewo, musisz napisać pętlę w innym języku (C#, procedura składowana obsługująca pętle, ...).
To to fajny artykuł opisujący, jak pracować ze sposobem przechowywania drzewa (w tym pobieraniem drzewa i usuwaniem elementów z drzewa).
Co ciekawsze, ten artykuł opisuje również sposób przechowywania drzew w tabeli bazy danych, który to robi umożliwiają pobranie całego drzewa w jednym zapytaniu. Nazywa się przemierzanie drzewa w przedsprzedaży . Możesz to sprawdzić, aby uzyskać więcej informacji. Znalazłem implementację C# . Wymaga trochę więcej logiki niż sposób, którego używasz teraz, ale jest bardziej wydajny dla wszystkich, z wyjątkiem najmniejszych drzew.