<DAY212>SOQLについて
●9/21(土)
●学習日数 212日
●学習時間(本日)2時間
●累計学習時間 903.0時間
●一日あたりの平均学習時間 4.28時間
SOQLとは
Lightning Platform 用にカスタマイズされたSQL言語。
Salesforce Object Query Languageが正式な名称。
SOQL クエリを Apex コード内に含めるには、SOQL ステートメントを角括弧でラップして、戻り値を sObject の配列に割り当てます。
たとえば、次のコードでは、2 つの項目 (名前と電話) を持つすべての取引先レコードを取得し、Account sObject の配列を返します。
Account[] accts = [SELECT Name,Phone FROM Account];
簡単な構文
WHERE句は省略可能です。
fields項目を取得します、ObjectNameから。WHEREで条件を指定
SELECT fields FROM ObjectName [WHERE Condition]
ID項目について
ID 項目をクエリに指定する必要はありません。Apex クエリでは、指定されたかどうかに関係なく常に ID 項目が返されます。
同等の結果が返ってくる。
SELECT Id,Phone FROM Account SELECT Phone FROM Account
AND.OR
WHERE 句には、論理演算子 (AND、OR) と括弧を使用してグループ化した複数の条件を含めることができます。たとえば、次のクエリは名前が SFDC Computing で、従業員数が 25 より多い取引先をすべて返します。
SELECT Name,Phone FROM Account WHERE (Name='SFDC Computing' AND NumberOfEmployees>25)
LIKE 演算子
比較に等号演算子 (=) を使用する代わりに、LIKE 演算子を使用してあいまい一致検索を実行することができます。たとえば、条件 WHERE Name LIKE 'SFDC%' を使用して、名前が SFDC で開始する取引先をすべて取得できます。% ワイルドカード文字は、0 個以上の文字に一致します。_ 文字を使用して 1 文字のみに一致させることもできます
WHERE Name LIKE 'SFDC%'
ORDER BY 句
デフォルトはASC順
SELECT Name,Phone FROM Account ORDER BY Name
DESC
Z→A
SELECT Name,Phone FROM Account ORDER BY Name DESC
LIMIT
1件で指定すると配列で返って来ないので注意
Account oneAccountOnly = [SELECT Name,Phone FROM Account LIMIT 1];
SOQL クエリでの変数へのアクセス
Apex の SOQL ステートメントは、前にコロン (:) が付けられた Apex コードの変数と式を参照できます。SOQL ステートメント内でローカル変数を使用することを、バインドと呼びます。
String targetDepartment = 'Wingo'; Contact[] techContacts = [SELECT FirstName,LastName FROM Contact WHERE Department=:targetDepartment];
関連レコードのクエリ
親レコードに関連する子レコードを取得
親オブジェクト作成しているときに子供データーが欲しくなった時
SELECT Name, (SELECT LastName FROM Contacts) FROM Account
子レコードに関連する親レコードを取得
子供のオブジェクトからデーター拾っている時に親のデータが欲しくなった時
SELECT Account.Name FROM Contact
カスタムオブジェクトの場合
このセクションの例は、標準オブジェクトに基づいてます。カスタムオブジェクトも、カスタムリレーションを使用して一緒にリンクできます。カスタムリレーション名は __r サフィックスで終わります。たとえば、請求書明細は、Invoice_Statement__c カスタムオブジェクトの Line_Items__r リレーションを介して品目名にリンクします
カンマが必要です。
SELECT Account__r.Name, Name FROM store_power__c