次の方法で共有


階層データのクエリ

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

新しいクエリ条件演算子を利用して、明示的な階層リレーションシップを持つテーブルにクエリを実行できます。 これらの演算子は、階層リレーションシップとして特に定義されているテーブル リレーションシップにのみ適用されます。 QueryExpressionまたはFetchExpressionを使用してクエリを実行するときに、新しい条件演算子を使用してこの階層データを取得できます。

階層データの条件演算子

階層データのクエリを実行するときに条件を設定するには、次の演算子を使用します。

FetchXML ConditionOperator Description
above Above 参照先レコードの階層的な先祖行のすべてのレコードを返します。
eq-or-above AboveOrEqual 階層内の参照先レコードとその上のすべてのレコードを返します。
under Under 階層内の参照先レコードの下にあるすべての子レコードを返します。
eq-or-under UnderOrEqual 階層内の参照先レコードとその下位にあるすべての子レコードを返します。
not-under NotUnder 階層内の参照先レコードの下にないすべてのレコードを返します。
eq-useroruserhierarchy OwnedByMeOrMyReports 階層型セキュリティ モデルを使用する場合、現在のユーザーまたはユーザーのレポート階層に等しい
eq-useroruserhierarchyandteams OwnedByMeOrMyReportsAndTeams 階層型セキュリティ モデルを使用すると、現在のユーザーとユーザーのチーム、またはユーザーのレポート階層とそのチームが等しくなります。

階層データに対してクエリを実行するときの再帰の制限

階層データのクエリはリソースを大量に消費する可能性があるため、 AboveAboveOrEqualUnderUnderOrEqual、および NotUnder 条件演算子を使用する階層型クエリでは、既定で 100 個の再帰が許可される条件に制限されています。

OwnedByMeOrMyReports および OwnedByMeOrMyReportsAndTeams は、 階層の深さの 設定に依存する階層セキュリティ条件演算子であり、 設定>Security>Hierarchy Security で確認できます。 この設定の値は、 Organization.MaxDepthForHierarchicalSecurityModel 列に格納されます。

FetchXML ベースのクエリで rowaggregate 列を使用して、階層的に関連する子レコードの数を取得します。 この値を CountChildren に設定すると、レコードの子レコードの合計数を含む値が EntityCollectionに含まれます。 たとえば、次のクエリには、AccountChildren パラメーターが親レコードの{0}を表す階層リレーションシップ内の子アカウント レコードの数を表すAccountId集計値が含まれます。

<fetch>  
  <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>  
  

返される集計値は、ユーザーが読み取りアクセス権を持たない可能性のあるものも含め、すべての子レコードを表します。

こちらもご覧ください

簡易検索 クエリについて