function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
pikotaropikotaro 

子オブジェクト→親オブジェクト→子オブジェクトを取得する方法について

ユーザオブジェクト(親)
└購入履歴オブジェクト(子(ユーザオブジェクトと1対多の関係)
└アンケートオブジェクト(子(物理的には1:多ですが、論理的にはユーザオブジェクトと1:1の関係))

上記のような構成の際、

購入履歴オブジェクトから、アンケートオブジェクトへはsoqlで辿れないかと思います。

この場合、以下のような感じで2本のSOQL実行してマージすることを考えましたが、
懸念事項ありますでしょうか。
また、より良い解決方法ありますでしょうか。

1.購入履歴とユーザオブジェクトを取得
2.アンケートとユーザオブジェクトを取得
3.for loop中でユーザIDで、購入履歴とアンケートオブジェクトをマージ
 
Best Answer chosen by pikotaro
Taiki YoshikawaTaiki Yoshikawa
2本のSOQLで問題ないと思いますがサブクエリをつかうことで1つのクエリで取得が可能かもしれません。
https://developer.salesforce.com/forums/?id=906F0000000MJapIAG

たとえば下記のようにWHEREの対象部分をSOQLクエリで取得したりが可能です。
Select Id, Name FROM Opportunity
    WHERE OwnerId IN (SELECT Id From User WHERE IsActive = false)

 

All Answers

Taiki YoshikawaTaiki Yoshikawa
2本のSOQLで問題ないと思いますがサブクエリをつかうことで1つのクエリで取得が可能かもしれません。
https://developer.salesforce.com/forums/?id=906F0000000MJapIAG

たとえば下記のようにWHEREの対象部分をSOQLクエリで取得したりが可能です。
Select Id, Name FROM Opportunity
    WHERE OwnerId IN (SELECT Id From User WHERE IsActive = false)

 
This was selected as the best answer
pikotaropikotaro
あ、なるほど。whereでidでしたらサブクエリできましたね。気づきありました。ありがとうござました。