次の方法で共有


IsDescendantOf (データベース エンジン)

this が parent の子孫である場合に true を返します。

構文

-- Transact-SQL syntax
child. IsDescendantOf ( parent )

-- CLR syntax
SqlHierarchyId IsDescendantOf (SqlHierarchyId parent )

引数

  • parent
    IsDescendantOf テストの実行対象となる hierarchyid ノード。

戻り値の型

SQL Server の戻り値の型 : bit

CLR の戻り値の型 : SqlBoolean

説明

親をルートとするサブツリー内のすべてのノードには true、それ以外のノードには false を返します。

親はそれ自身の子孫と見なされます。

使用例

A. WHERE 句で IsDescendantOf を使用する

次の例では、指定したマネージャー、およびそのマネージャーの部下にあたる従業員を取得します。

DECLARE @Manager hierarchyid
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\dylan0'

SELECT * FROM HumanResources.EmployeeDemo
WHERE OrgNode.IsDescendantOf(@Manager) = 1

B. IsDescendantOf を使用してリレーションシップを評価する

次のコードでは、3 つの変数を宣言して設定します。 その後に階層リレーションシップを評価し、比較を基に 2 つの出力結果のいずれかを返します。

DECLARE @Manager hierarchyid, @Employee hierarchyid, @LoginID nvarchar(256)
SELECT @Manager = OrgNode FROM HumanResources.EmployeeDemo
WHERE LoginID = 'adventure-works\terri0' ;

SELECT @Employee = OrgNode, @LoginID = LoginID FROM HumanResources.EmployeeDemo
  WHERE LoginID = 'adventure-works\rob0'

IF @Employee.IsDescendantOf(@Manager) = 1
   BEGIN
    PRINT 'LoginID ' + @LoginID + ' is a subordinate of the selected Manager.'
   END
ELSE
   BEGIN
    PRINT 'LoginID ' + @LoginID + ' is not a subordinate of the selected Manager.' ;
   END

C. 共通言語ランタイム メソッドを呼び出す

次のコード例では IsDescendantOf() メソッドを呼び出します。

this.IsDescendantOf(Parent)

関連項目

参照

hierarchyid (Transact-SQL)

概念

hierarchyid データ型メソッド リファレンス

階層データ (SQL Server)