親テーブルと子テーブルの3つのテーブルがあります。Mother_cが親であるとしましょう。次に、Child_cとPet_cは、Mother_cへのマスター/詳細関係ポインターを持つ2つの子テーブルです。
Child_ cから1つの行のIDがあり、その単一のChild_c行のMother_cに対応するPet_cからすべての行を取得したいと思います。
これが1つのSOQLクエリで可能かどうか疑問に思っていますか?
親テーブルと子テーブルの3つのテーブルがあります。Mother_cが親であるとしましょう。次に、Child_cとPet_cは、Mother_cへのマスター/詳細関係ポインターを持つ2つの子テーブルです。
Child_ cから1つの行のIDがあり、その単一のChild_c行のMother_cに対応するPet_cからすべての行を取得したいと思います。
これが1つのSOQLクエリで可能かどうか疑問に思っていますか?
はい、これは準結合 SOQL で完全に可能です。次のような標準の CRM オブジェクトでこれをテストしました。
SELECT Id,
(SELECT Id FROM Cases)
FROM Account
WHERE Id IN (SELECT AccountId
FROM Contact
WHERE Id = '0036000000qCwp9'
)
これを順を追って説明するには、特定の連絡先 ID を使用して、最初に親取引先を見つけてから、子ケースに戻ります。カスタム オブジェクトを使用した例では、非常に似ていますが、代わりに __r カスタム リレーションシップ名を使用します。
SELECT Id,
(SELECT Id FROM Pet__r)
FROM Mother__c
WHERE Id IN (SELECT Mother__c
FROM Child__c
WHERE Id = '003a000000qCwp9'
)