Share via


左外部結合を QueryExpression で使用して "存在しない" 記録をクエリする

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

QueryExpression クラスの使用して、左外部結合を使用し、結合の表をフィルタリングするクエリを実行します。たとえば、過去 2 か月間のキャンペーン活動がない、取引先担当者をすべて検索できます。 このクエリタイプの別のよくある使用法では、次のような場合には存在しないといった、あるセットには存在しないレコードを検索するクエリです。

  • タスクのないすべての潜在顧客を検索する

  • 取引先担当者のないすべての取引先企業を検索する

  • 1つか、2つのタスクがあるすべての潜在顧客を検索する

左外部結合では、2 番め入力で最初の入力の結合を満たす各列を返します。 また、2 番目入力で一致する列がない最初の入力列を返します。 2 番めの一致しない列が null 値として返されます。

条件演算子として entityname 属性を使用して、QueryExpression で左外部結合を実行できます。entityname 属性は、条件、フィルターおよび入れ子フィルターで有効です。

エイリアス名を使用して、タスクのないすべての潜在顧客を検索する

次の例は、このクエリの作成方法を示しています。

QueryExpression qx = new QueryExpression("lead");
qx.ColumnSet.AddColumn("subject");

LinkEntity link = qx.AddLink("task", "leadid", "regardingobjectid", JoinOperator.LeftOuter);
link.Columns.AddColumn("subject");
link.EntityAlias = "tsk";

qx.Criteria = new FilterExpression();
qx.Criteria.AddCondition("tsk", "activityid", ConditionOperator.Null);

これは次のSQLと等価です。

SELECT lead.FullName
FROM Leads as lead
LEFT OUTER JOIN Tasks as ab
ON (lead.leadId  =  ab.RegardingObjectId)
WHERE ab.RegardingObjectId is null

関連項目

QueryExpression でクエリを作成する
null 値のテスト
QueryExpression クラスの使用
QueryByAttribute クラスの使用

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権