クエリ階層型データ
特定の自己参照一対多テーブル リレーションシップを階層として定義できます。 これらの階層に関連データを返すクエリを作成できます。
クエリ条件演算子を使用して、明示的な階層リレーションシップを使用してテーブルをクエリする方法について説明します。 これらの演算子は、階層関係として具体的に定義されたテーブル関係にのみ適用されます。 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 |
階層セキュリティ モデルが使用されている場合、現在のユーザーとユーザーのチームまたはユーザーのレポート階層とそのチームに等しくなります |
再帰は階層データを照会する時を制限する
階層データを照会するとリソースを大量に消費するので、Above
、AboveOrEqual
、Under
、UnderOrEqual
、および NotUnder
条件演算子を使用して階層を照会できる再帰を、既定で 100 に限定しています。
OwnedByMeOrMyReports
と OwnedByMeOrMyReportsAndTeams
は、階層セキュリティの条件演算子で、設定 > セキュリティ > 階層セキュリティにある階層の深さ設定によって異なります。 この設定の値は 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 分かかります。 個人データは収集されません (プライバシー ステートメント)。