この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

参照関係と外部結合

API バージョン 13.0 以降では、リレーション SOQL クエリは、外部結合の場合と同様に、関連付けられた外部キー項目が null 値であってもレコードを返します。

動作の変化は、リレーションクエリの次のタイプにあてはまります。

  • ORDER BY 句でレコードの外部キーの値が null の場合、バージョン 13.0 以降ではレコードが返され、13.0 より前のバージョンではレコードが返されません。次に例を示します。
    1SELECT Id, CaseNumber, Account.Id, Account.Name
    2FROM Case
    3ORDER BY Account.Name

    AccountId が空白のケースレコードは、バージョン 13.0 以降では返されます。

    次の例はカスタムオブジェクトを使用します。

    1SELECT ID, Name, Parent__r.id, Parent__r.name
    2FROM Child__c
    3ORDER BY Parent__r.name

    このクエリは、子オブジェクトの IdName 値、各 Child 内で参照される親オブジェクトの Id と名前を使用し、親の名前で順番を付けます。バージョン 13.0 以降では、Parent__r.id または Parent__r.name が null の場合でも、レコードを返します。それより前のバージョンでは、そのようなレコードは、クエリによって返されません。

  • OR を使用する WHERE 句でレコードの外部キーの値が null の場合、バージョン 13.0 以降ではレコードが返されますが、13.0 より前のバージョンではレコードが返されません。たとえば、組織に、LastName 項目の値が foo に一致し、AccountId 項目の値が null の取引先責任者オブジェクトが存在し、かつ、LastName 項目の値が foo とは異なり、bar という名前の親取引先オブジェクトを持つ別の取引先責任者オブジェクトが存在するとします。この場合に以下のクエリを実行すると、bar と等しい LastName 項目の値を持った取引先責任者オブジェクトのみが返されます。
    1SELECT Id FROM Contact WHERE LastName = 'foo' or Account.Name = 'bar'
    親取引先のない取引先責任者は条件を満たす姓が含まれているため、バージョン 13.0 以降では返されます。
  • 親項目の値をチェックする WHERE 句では、親が存在しない場合、バージョン 13.0 以降ではレコードが返されますが、13.0 より前のバージョンでは返されません。次に例を示します。
    1SELECT Id
    2FROM Case
    3WHERE Contact.LastName = null

    ケースレコード Id 値は、バージョン 13.0 以降では返されますが、13.0 より前のバージョンでは返されません。

  • Boolean 項目を使用する WHERE 句では、Boolean 項目に null 値が含まれることはありません。代わりに、nullfalse として処理されます。外部結合オブジェクトの Boolean 項目は、クエリに一致するレコードがない場合は false として処理されます。