こんにちは、にいるです。
Savepoオリジナルの開発初心者向けプログラム「Sink it」です。
今回で第15回目、題材はクエリ言語の「親から子レコードを取得するSOQL」です。
この記事は「15.リレーションクエリを使ってみよう(親→子)」の解説と解答です。
1.リレーションクエリ(親→子)とは
基本的な構文です。
1 |
SELECT ID,Name,(SELECT Id,Name FROM Contacts) FROM Account |
母体は親オブジェクトでSOQLを書き、子はSELECTの中に項目の形で指定します。
子オブジェクトは複数形にする必要があります。
上記の場合、取得した取引先のIdと名前とその取引先に関連する取引先責任者のIdと名前を取得します。
2.解答・解説
解答です。
1 2 3 4 5 |
// ①一番新しく作成した取引先の取引先責任者を全員取得 SELECT ID,Name,(SELECT Id,Name FROM Contacts) FROM Account ORDER BY CreatedDate DESC LIMIT 1 // ②特定の商談を抽出して、商談商品の名前と合計金額を取得してください。 SELECT Id, Amount,(SELECT Product2.Name, TotalPrice FROM OpportunityLineItems) FROM Opportunity |
■デバッグ
①一番新しく作成した取引先の取引先責任者を全員取得
ちょっと見にくいですが、カラム3列目のContactsにはIdが2つ入っていますね。
②特定の商談を抽出して、商談商品の名前と合計金額を取得してください。
こちらも見にくいですが、商談に関連する商談商品の合計金額が取得できていることが確認できます。
構文は[SELECT Id,(SELECT Id FROM 子s) FROM 親]です。
SOQLを親オブジェクトで書いて、その中にリレーションクエリを別に書く形です。
リレーションクエリは、子の項目を親のSELECT項目の1つのイメージを持つと、理解しやすいかなと思います。
3.まとめ
いかがでしたでしょうか。
オブジェクト構造をしっかり把握できていれば、そんなに難しくはないと思います。
ただ、初心者の方には少し複雑な構文に見えるかもしれません。
これにWHERE句の条件が入ったり、関数を使ったり、日付のデータ型に悩まされるとシンプルなはずなのに、途端に難しくなってしまいます。
親から子を見るときはちょっと複雑なので、まずは子→親の取得方法を完璧にマスターすることをおすすめします!
子→親は「.」をつけるだけなので!
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!