こんにちは、アンダーソンです。
今回はApexでサブクエリを使って取得したレコードの取得する方法を確認していきたいと
思います。
返される形式
サブクエリを発行して取得した値は、1レコードの中にコレクション型の配列として返されます。
イメージは下記のような感じです。
Account acc = [SELECT Name,Phone,Rating,(SELECT Id, LeadSource FROM Contacts) FROM Account LIMIT 1];

これをApexで取得する際には通常通り、配列のコレクションにアクセスするのと同じようにアクセスします。
Contact con = acc.Contacts[0];
でOKです。
さらにfor文でループさせることも可能です。
for ( Contact con : acc.Contacts ) {
con.LeadSource = Web;
}
update acc.Contacts;
これでAccountを取得しながら関連するContactのDML操作なども簡単に行うことができます。
まとめ
サブクエリを使えば一度のSOQLで関連するレコードを取得できるため、トリガなどで複数のSOQLを発行しなくてもよくなり、ガバナ制限の抵触を避ける一つのテクニックとして使えます。
ぜひ活用してみてください。
コメント