Hierarchyid, ciąg dalszy

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 ;

image

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.

Leave a Reply

Your email address will not be published.