Aracılığıyla paylaş


Hierarchy yöntemleri kullanarak hiyerarşik bir tablo sorgulanıyor.

Bu görevi şimdi HumanResources.EmployeeOrg tablonun tam olarak doldurulur, hiyerarşi, hiyerarşik yöntemlerden bazılarını kullanarak sorgu nasıl gösterilir.

Alt düğümlerin bulmak için

  1. Bir bağımlı çalışan Sariya var.Sariya'nın düzeyindekilerin için sorgulamak için , kullanan aşağıdaki sorgu yürütmek IsDescendantOf yöntem:

    DECLARE @CurrentEmployee hierarchyid
    
    SELECT @CurrentEmployee = OrgNode
    FROM HumanResources.EmployeeOrg
    WHERE EmployeeID = 46 ;
    
    SELECT *
    FROM HumanResources.EmployeeOrg
    WHERE OrgNode.IsDescendantOf(@CurrentEmployee) = 1 ;
    

    Sonuç Sariya hem Wanida listeler.Filiz 0 en alt olduğundan Sariya listelendiğini düzey.Wanida alt 1'den ise düzey.

  2. 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.Bir düzey altında Sariya Wanida olduğundan kullanın. GetAncestor(1) Aşağıdaki kodda gösterildiği gibi:

    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
    

    Bu saat, sonuç yalnızca Wanida listeler.

  3. Şimdi değiştirmek @CurrentEmployee David (ÇalışanNo 6) ve düzey 2. yürütmek aşağıdakileri de Wanida döndürmek için:

    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
    

    Bu saat, kimin tuşunu da David, iki düzeyi bildirir. Gamze de alırsınız.

GetRoot ve GetLevel kullanmak için

  1. Daha büyük bir hiyerarşi büyüdükçe, üyeleri hiyerarşisindeki yeri belirlemek daha zordur.Use GetLevel Her bir satır kapalı kaç düzeyinin bulmak için hiyerarşide yöntemidir. Tüm satırları düzeyleri görüntülemek için şu kodu çalıştırın:

    SELECT OrgNode.ToString() AS Text_OrgNode, 
    OrgNode.GetLevel() AS EmpLevel, *
    FROM HumanResources.EmployeeOrg ;
    GO
    
  2. Use GetRoot yöntem hiyerarşide kök düğümü bulunamadı.Aşağıdaki kod, kök olan tek satır döndürür:

    SELECT OrgNode.ToString() AS Text_OrgNode, *
    FROM HumanResources.EmployeeOrg
    WHERE OrgNode = hierarchyid::GetRoot() ;
    GO
    

Sonraki görev hiyerarşiyi yeniden.