Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
Üst öğesinin alt düğümünü döndürür.
Syntax
-- Transact-SQL syntax
parent.GetDescendant ( child1 , child2 )
-- CLR syntax
SqlHierarchyId GetDescendant ( SqlHierarchyId child1 , SqlHierarchyId child2 )
Arguments
child1
NULL veya geçerli düğümün alt öğesinin hierarchyid.
child2
NULL veya geçerli düğümün alt öğesinin hierarchyid.
Dönüş Türleri
SQL Server dönüş türü:hierarchyid
CLR dönüş türü:SqlHierarchyId
Remarks
Üst düğümün alt öğesi olan bir alt düğümü döndürür.
- Üst öğe NULL ise NULL döndürür.
- Üst öğe NULL değilse ve hem alt1 hem de alt2 NULL ise, üst öğesinin alt öğesini döndürür.
- Üst öğe ve alt1 NULL değilse ve alt2 NULL ise, child1'den büyük üst öğesinin alt öğesini döndürür.
- Üst ve alt öğe2 NULL değilse ve alt1 NULL ise, alt öğeden küçük olan alt öğeyi döndürür2.
- Üst öğe, alt1 ve alt öğe2 NULL değilse, alt öğeden büyük ve alt2'den küçük bir üst öğe döndürür.
- Child1 NULL değilse ve üst öğesinin alt öğesi değilse, bir özel durum oluşturulur.
- Alt öğe2 NULL değilse ve üst öğesinin alt öğesi değilse, bir özel durum oluşturulur.
- Alt1 >= alt2 ise, bir özel durum oluşur.
GetDescendant belirleyicidir. Bu nedenle, GetDescendant aynı girişlerle çağrılırsa, her zaman aynı çıkışı üretir. Ancak, üretilen çocuğun tam kimliği, C örneğinde gösterildiği gibi diğer düğümler ile ilişkisine bağlı olarak değişebilir.
Examples
A. En az alt düğüm olarak satır ekleme
Düğüm /3/1/mevcut bir çalışana raporlaması yapılan yeni bir çalışan işe alınır. Yeni satır düğümünü /3/1/1/olarak belirtmek için bağımsız değişkenler olmadan GetDescendant yöntemini kullanarak yeni satırı eklemek için aşağıdaki kodu yürütebilirsiniz:
DECLARE @Manager hierarchyid;
SET @Manager = CAST('/3/1/' AS hierarchyid);
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(NULL, NULL),
'adventure-works\FirstNewEmployee', 'Application Intern', '3/11/07') ;
B. Daha büyük bir alt düğüm olarak satır ekleme
A örneğindekiyle aynı yöneticiye rapor veren başka bir yeni çalışan işe alındı. Alt 1 bağımsız değişkenini kullanarak GetDescendant yöntemini kullanarak yeni satırı eklemek için aşağıdaki kodu yürüterek yeni satırın düğümünün A örneğindeki düğümü takip edeceğinden /3/1/2/olur:
DECLARE @Manager hierarchyid, @Child1 hierarchyid;
SET @Manager = CAST('/3/1/' AS hierarchyid);
SET @Child1 = CAST('/3/1/1/' AS hierarchyid);
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(@Child1, NULL),
'adventure-works\SecondNewEmployee', 'Application Intern', '3/11/07') ;
C. Mevcut iki düğüm arasına satır ekleme
Üçüncü bir çalışan işe alınır ve A örneğindekiyle aynı yöneticiye raporlanır. Bu örnek, yeni satırı A örneğindeki FirstNewEmployee daha büyük ve B örneğindeki SecondNewEmployee küçük bir düğüme ekler. GetDescendant yöntemini kullanarak aşağıdaki kodu yürütebilirsiniz. Yeni satırın düğümünün /3/1/1.1/düğüm olacağını belirtmek için hem alt1 bağımsız değişkenini hem de alt2 bağımsız değişkenini kullanın:
DECLARE @Manager hierarchyid, @Child1 hierarchyid, @Child2 hierarchyid;
SET @Manager = CAST('/3/1/' AS hierarchyid);
SET @Child1 = CAST('/3/1/1/' AS hierarchyid);
SET @Child2 = CAST('/3/1/2/' AS hierarchyid);
INSERT HumanResources.EmployeeDemo (OrgNode, LoginID, Title, HireDate)
VALUES
(@Manager.GetDescendant(@Child1, @Child2),
'adventure-works\ThirdNewEmployee', 'Application Intern', '3/11/07') ;
A, B ve C örneklerini tamamladıktan sonra, tabloya eklenen düğümler aşağıdaki hierarchyid değerleriyle eşlenir:
/3/1/1/
/3/1/1.1/
/3/1/2/
Düğüm /3/1/1.1/ düğüm /3/1/1/ büyüktür ancak hiyerarşide aynı düzeydedir.
D. Skaler örnekler
SQL Server, hierarchyid düğümlerinin rastgele eklenmesini ve silinmesini destekler. GetDescendant() kullanarak, iki hierarchyid düğümü arasında bir düğüm oluşturmak her zaman mümkündür.
GetDescendantkullanarak örnek düğümler oluşturmak için aşağıdaki kodu yürütür:
DECLARE @h hierarchyid = hierarchyid::GetRoot();
DECLARE @c hierarchyid = @h.GetDescendant(NULL, NULL);
SELECT @c.ToString();
DECLARE @c2 hierarchyid = @h.GetDescendant(@c, NULL);
SELECT @c2.ToString();
SET @c2 = @h.GetDescendant(@c, @c2);
SELECT @c2.ToString();
SET @c = @h.GetDescendant(@c, @c2);
SELECT @c.ToString();
SET @c2 = @h.GetDescendant(@c, @c2);
SELECT @c2.ToString();
E. CLR örneği
Aşağıdaki kod parçacığı GetDescendant() yöntemini çağırır:
SqlHierarchyId parent, child1, child2;
parent = SqlHierarchyId.GetRoot();
child1 = parent.GetDescendant(SqlHierarchyId.Null, SqlHierarchyId.Null);
child2 = parent.GetDescendant(child1, SqlHierarchyId.Null);
Console.Write(parent.GetDescendant(child1, child2).ToString());
Ayrıca bakınız
hierarchyid Veri Türü Yöntemi Başvurusu
Hiyerarşik Veriler (SQL Server)
Hiyerarşi (Transact-SQL)