この記事は新社会人のSalesforce学習記録とその他 Advent Calendar 2025の3日目の記事です。
今日はSOQLについてアウトプットします。
SOQL
SQLと見た目が結構似ている部分があります。
Salesforceでは、オブジェクトのレコードを探すことができます。
主にApexで使われています。
基本的な書き方
以下の3つ
・SELECT
・FROM
・WHERE
を使うようですが、最後のWHEREは条件を指定する場合に使用するのでなくても行けるようです。
ちなみにこのSELECTとかFROMとかは大文字小文字の区別はありません。
SELECT
どの項目を取ってくるかを指定します。
例)Id,Nameなど
カスタム項目も取ってこれます。カスタム項目の場合、__cとつける必要があります。
例えばNickNameとかいうカスタム項目があれば、
SELECT NickName__c
とか書くようです。
主従関係のあるオブジェクトでは、お互いのオブジェクトの項目を取ってこれます。ただし親→子か、子→親かで書き方が変わってきます。
子→親
子オブジェクトから親オブジェクトの項目を取ってくる場合は、
親オブジェクト名.親オブジェクトの、とってくる項目名
で行けるようです。オブジェクトの主従関係では、親は一つしかないのでそのまま指定できるっぽいです。
例)Account(親、取引先)とContact(子、取引先責任者)の例
SELECT Id,Account.Name FROM Contact;
親→子
サブクエリを使います。そもそもクエリとはSOQL文そのものなので、サブクエリはSOQL文の中に入っているさらに小さなSOQLになります。以下は例です↓
SELECT Id,(SELECT Name FROM Contacts) FROM Account;
みたいな感じです。
躓きポイント
毎回間違えてしまうので書き記しておきます。カスタムオブジェクトのリレーションでは、__rを使用します。その際、カスタムオブジェクト名は複数形になります。

最初にカスタムオブジェクトを作成した際の、Plural Labelのほうが複数形になります。
新しくDecemberオブジェクトを作成して主従関係を作成、確認します。
SELECT Id,(SELECT LastDay__c FROM AdventCalendars__r) FROM December__c
こんな感じです。逆は
SELECT Id,AdventCalendars__r.Id FROM December__c
SOQLを使える場所
主に2つ
1.Apex
2.開発者コンソールのQuery Editor
があります。
基本はApex、Query Editorは確認するときなどに使う?っぽいです。
まとめ
SOQLでは特定のオブジェクトに対して、レコードの内容を取ってこれる。
主従関係がある場合でも、親→子は子オブジェクト__r.子オブジェクトの項目のサブクエリ、子→親は親オブジェクト.項目でとってこれる。
Listでとるのが一般的。とってくるレコードが一つだけならListでなくてもいける。
Apexで主に使われる。開発者コンソールのQueryEditorでも調べることができる。
