Querying a Hierarchical Table Using Hierarchy Methods
Teraz, gdy w tabela HumanResources.EmployeeOrg zostanie całkowicie wypełniony, to zadanie będzie wskazywać sposoby kwerendy za pomocą niektórych metod hierarchiczne hierarchii.
Aby znaleźć węzły podrzędne
Sariya ma jeden pracownik podrzędnego.Dla firmy Sariya podwładnych kwerendy wykonać następujące kwerendy, która używa IsDescendantOf metoda:
DECLARE @CurrentEmployee hierarchyid SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeOrg WHERE EmployeeID = 46 ; SELECT * FROM HumanResources.EmployeeOrg WHERE OrgNode.IsDescendantOf(@CurrentEmployee) = 1 ;
Wynik wyświetla zarówno Sariya i Wanida.Sariya jest wyświetlany, ponieważ jest ona obiektu podrzędnego poziom 0.Wanida jest obiektu podrzędnego poziom 1.
You can also query for this information by using the GetAncestor method.GetAncestor takes an argument for the level that you are trying to return.Ponieważ Wanida jest jeden poziom poniżej Sariya, za pomocą GetAncestor(1) jak pokazano w poniższym kodzie:
DECLARE @CurrentEmployee hierarchyid SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeOrg WHERE EmployeeID = 46 ; SELECT OrgNode.ToString() AS Text_OrgNode, * FROM HumanResources.EmployeeOrg WHERE OrgNode.GetAncestor(1) = @CurrentEmployee
To czas wynik wyświetla tylko Wanida.
Teraz zmienić @CurrentEmployee David (IDPracownika 6) i poziom 2. Wykonaj następujące czynności, aby zwracają również Wanida:
DECLARE @CurrentEmployee hierarchyid SELECT @CurrentEmployee = OrgNode FROM HumanResources.EmployeeOrg WHERE EmployeeID = 6 ; SELECT OrgNode.ToString() AS Text_OrgNode, * FROM HumanResources.EmployeeOrg WHERE OrgNode.GetAncestor(2) = @CurrentEmployee
Tym razem także otrzymywać Mary, który również podlega David dwa poziomy niedziałający.
Aby użyć GetRoot i GetLevel
Jak zwiększa się hierarchii jest trudniejszy do ustalenia, których członkami są w hierarchii.Użycie GetLevel metoda, aby znaleźć liczbę poziomów w każdym wierszu znajduje się w hierarchii.Należy wykonać poniższy kod, aby wyświetlić poziomy wszystkie wiersze:
SELECT OrgNode.ToString() AS Text_OrgNode, OrgNode.GetLevel() AS EmpLevel, * FROM HumanResources.EmployeeOrg ; GO
Użycie GetRoot metoda, aby znaleźć węzła głównego w hierarchii.W poniższym kodzie zwróci jeden wiersz, który jest katalogiem głównym:
SELECT OrgNode.ToString() AS Text_OrgNode, * FROM HumanResources.EmployeeOrg WHERE OrgNode = hierarchyid::GetRoot() ; GO
Następnego zadania spowoduje zmianę hierarchii.
Keyboard Shortcuts in Reporting Services
Zmiana kolejności danych w tabela hierarchiczna za pomocą metody hierarchiczna