W poprzednim poście zaprezentowałem sposób tworzenia drzewa w tabeli wykorzystując typ hierarchyid. W dzisiejszym poście z kolei chciałbym pokazać kilka ułatwień jakie daje nam ten nowy typ.
Każdy węzeł jest reprezentowany za pomocą stringu. Dla korzenia jest to “/”, dla potomstwa “/1”, “/2” itd. Schodząc w dół drzewa otrzymujemy “/1/1”, “/1/1/1” itd. Bardzo łatwo wiec dostać się do konkretnego węzła:
select * from Tree where Node=cast('/1/' as hierarchyid);
Typ hierarchyid posiada wiele metod. Jedną z ciekawszych jest Getlevel:
select Node.GetLevel(),Node from Tree ;
Wyświetlenie więc wszystkich węzłów na wskazanym poziomie nie jest już problemem:
select Node.GetLevel(),Node from Tree where Node.GetLevel()=1;
Ponadto do dyspozycji mamy metody typu GetAncestor lub IsDescedantOf.