0

以下のシナリオで apex に SOQL を記述する方法を知っている人はいますか

" "Countries" と "MappedCountries" という 2 つのオブジェクトがあり、Countries オブジェクトには国の完全なリストがあり、MappedCountries にはいくつかの国しかありません (Countries オブジェクトのサブセットのようなものです)。

ここで、「MappedCountries オブジェクト タイプに一致しない Countries オブジェクト タイプのエントリが必要」のような SOQL apex 関数が必要です。

たとえば、Countries オブジェクト タイプが IND AUS NZ ENG で構成され、MappedCountries オブジェクト タイプが NZ AUS で構成される場合、クエリは 2 つのオブジェクト タイプから一致しない結果を IND ENG として取得する必要があります。

これに関して私を助けてください。

4

2 に答える 2

1

それらの間に直接の関係(ルックアップ)がない場合、データを取得するには2つのクエリが必要になると思います。これNOT INは、IDを返す定数またはサブクエリの明示的なリストが好きだからです(したがって、国名の文字列は機能しません)。たとえば、これはコンパイルすらしません:

SELECT Id, Name FROM Account WHERE Name NOT IN (SELECT Name FROM Contact)

したがって、次のようなものが必要です。

Set<String> countriesToExclude = new Set<String>();
for(Mapped_Country__c mc : [SELECT Name FROM Mapped_Country__c]){
    countriesToExclude.add(mc.Name);
}

List<Country__c> excludedCountries = [SELECT Name FROM Country__c WHERE Name NOT IN :countriesToExclude];

Selection__cたとえば、オブジェクトが呼び出され、関連するレコードのリストがある場合は、はるかに簡単になりますCountry__c...アカウントなしの連絡先を返す、次のようなものを簡単に記述できます。

SELECT Id, Name FROM Contact WHERE AccountId = null
于 2012-12-05T20:22:32.520 に答える
-1

これを試すことができると思います:

Select Id, Name From Countries__c Where Name NOT IN (Select Name From MappedCountries)
于 2012-12-05T10:15:22.563 に答える