こんにちは、にいるです。
Savepoオリジナルの開発初心者向けプログラム「Sink it」です。
今回で第11回目、題材はクエリ言語の「SOQL」です。
この記事は「11.SOQLを使ってみよう」の解説と解答です。
1.SOQLとは
基本的な構文です。
1 |
SELECT 項目名 FROM オブジェクト名 |
欲しい項目にアクセスしたい場合はSELECTの後にカンマ区切りで全て書く必要があります。
例えば、取引先のIDとName、作成日が欲しい場合は下記のように書く必要があります。
1 |
SELECT Id,Name,CreatedDate FROM Account |
上記を開発者コンソールのQuery Editorで実行するとデータが取得できると思うので、試してみてください。
2.解答・解説
解答です。
1 2 3 4 5 6 7 8 9 10 11 |
// 取引先1件をSObjectに取得 Account acc = [SELECT Name FROM Account LIMIT 1]; System.debug(acc); // 取引先責任者5件をListに作成日降順で取得 List<Contact> conList = [SELECT Name,CreatedDate FROM Contact ORDER BY CreatedDate DESC LIMIT 5]; // 作成日が降順になっているかをレコード一件ずつfor文で確認する for (Integer i = 0; i<5; i++ ) System.debug(conList[i].CreatedDate); |
■デバッグ
基本構文SELECT,FROMにORDER BYとLIMITが付属していますね。
ORDER BYは取得データの並び替えに使用する句です。
LIMITはイメージついているかと思いますが、取得するデータの上限値を決定する句です。
ORDER BYは[ORDER BY 項目 ASC(DESC)]の形で使用します。
指定した項目をASC(昇順)に並び替えるかDESC(降順)に並び替えるかを決定します。
取引先の取得はデータ型が単一の取引先なので、LIMIT 1を付けておかないとエラーになりコンパイルが通りませんので、この書き方をする場合は付けておきましょう。
取引先責任者はSELECTにCreatedDateを使用していますが、これはfor文中のdebugで使用するために必要だからです。
ただ並び替えた結果を取得するだけであれば、SELECTまではする必要はありません。
(この場合は項目にアクセスはできません。アクセスする場合はSELECTしておきましょう。)
3.まとめ
いかがでしたでしょうか。
SOQLは頭の体操でパズルみたいな感覚で書いていると楽しいですね。
内部クエリとかが絡んでくると少し複雑になってきますが、今回の内容はすごく初歩的な構文なので覚えておきましょう!
皆さんもぜひ色々と試してみてください。
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!