クエリ階層型データ

特定の自己参照一対多テーブル リレーションシップを階層として定義できます。 これらの階層に関連データを返すクエリを作成できます。

クエリ条件演算子を使用して、明示的な階層リレーションシップを使用してテーブルをクエリする方法について説明します。 これらの演算子は、階層関係として具体的に定義されたテーブル関係にのみ適用されます。 QueryExpression または FetchExpressionを使用して照会する際にこの階層データを取得する場合、新しい条件演算子を使用できます。

階層データの条件演算子

階層データを照会する際に条件を設定するには、次の演算子を使用します。

FetchXML ConditionOperator プロパティ
above Above 参照されているレコードの階層の親子ラインにあるすべてレコードを返します。
eq-or-above AboveOrEqual 参照されているレコードと階層でそれより上にあるすべてのレコードを返します。
under Under 階層で参照されているレコードの下にあるすべての子レコードを返します。
eq-or-under UnderOrEqual 参照されているレコードと階層でそれより下にあるすべての子レコードを返します。
not-under NotUnder 階層で参照されているレコードの下にないすべてのレコードを返します。
eq-useroruserhierarchy OwnedByMeOrMyReports 階層セキュリティ モデルが使用されている場合、現在のユーザーまたはユーザーのレポート階層に等しくなります
eq-useroruserhierarchyandteams OwnedByMeOrMyReportsAndTeams 階層セキュリティ モデルが使用されている場合、現在のユーザーとユーザーのチームまたはユーザーのレポート階層とそのチームに等しくなります

再帰は階層データを照会する時を制限する

階層データを照会するとリソースを大量に消費するので、AboveAboveOrEqualUnderUnderOrEqual、および NotUnder条件演算子を使用して階層を照会できる再帰を、既定で 100 に限定しています。

OwnedByMeOrMyReportsOwnedByMeOrMyReportsAndTeams は、階層セキュリティの条件演算子で、設定 > セキュリティ > 階層セキュリティにある階層の深さ設定によって異なります。 この設定の値は Organization.MaxDepthForHierarchicalSecurityModel 列に保存されます。

階層的に関連する子レコードの数を取得するには、 rowaggregate ベースのクエリで列を使用します。 FetchXML この値が CountChildren に設定されている場合、レコードの子レコードの合計数を含む値は、EntityCollectionに含まれます。 たとえば、次のクエリは、階層的な関係にある子取引先企業レコードの数を表す AccountChildren 合計値を含みます。ここで、 {0}パラメータは、親レコードのAccountIdを表します。

<fetch distinct='false' no-lock='false' mapping='logical'>  
  <entity name='account'>  
    <attribute name='name' />  
    <attribute name='accountid' />  
    <attribute name='accountid' rowaggregate='CountChildren' alias='AccountChildren'/>  
    <filter type='and'>  
      <condition attribute='accountid' operator='under' value='{0}' />  
    </filter>  
  </entity>  
</fetch>  
  

注意

戻された合計値はすべての子レコードを表します。それには、ユーザーが読み取ることのできないレコードも含まれます。

関連情報

簡易検索 クエリについて

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。