Apex-soql
Apex-SOQL
これは、SFDCデータベースで動作するように設計されたSalesforceオブジェクトクエリ言語です。 単一のsObjectでのみ、指定された基準でレコードを検索できます。
SOSLと同様に、複数のオブジェクトを検索することはできませんが、ネストされたクエリをサポートします。
SOQLの例
化学会社の継続的な例を考えてみましょう。 今日作成され、顧客名が「test」ではないレコードのリストが必要だとします。 この場合、以下に示すようにSOQLクエリを使用する必要があります-
以下に示すように、開発者コンソールのクエリエディターからSOQLクエリを実行できます。
開発者コンソールで以下のクエリを実行します。 今日作成された請求書レコードを検索します。
値が必要なフィールドを選択する必要があります。そうしないと、ランタイムエラーがスローされる可能性があります。
関係フィールドの横断
これはSFDCで最も重要な部分の1つです。親子オブジェクトの関係を何度も走査する必要があるためです。
また、データベースに2つの関連オブジェクトレコードを挿入する必要がある場合があります。 たとえば、請求書オブジェクトは顧客オブジェクトと関係があるため、1人の顧客が多くの請求書を持つことができます。
請求書を作成していて、この請求書を顧客に関連付ける必要があるとします。 この機能には次のコードを使用できます-
開発者コンソールでこのコードスニペットを実行します。 実行されたら、開発者コンソールから請求書のIDをコピーし、次に示すようにSFDCで同じものを開きます。 以下に示すように、親レコードがすでに請求書レコードに割り当てられていることがわかります。
子レコードの取得
ここで、特定の顧客レコードに関連するすべての請求書を1か所にまとめる必要がある例を考えてみましょう。 このためには、子関係の名前を知っている必要があります。 子関係名を表示するには、子オブジェクトのフィールド詳細ページに移動し、「子関係」値を確認します。 この例では、最後に__rが追加された請求書です。
例
この例では、データを設定し、「ABC Customer」レコードとして名前を持つ顧客を作成し、その顧客に3つの請求書を追加する必要があります。
ここで、顧客「ABC顧客」の請求書を取得します。 以下は、同じクエリです-
デバッグログでレコード値を確認できます。
親レコードの取得
作成日が今日である請求書の顧客名を取得する必要があると仮定します。それから、以下のクエリを使用して同じことができます-
例
子オブジェクトとともに親レコードの値を取得します。
ここでは、表記APEX_Customerr.Nameを使用しました。APEX_Customerrは親関係名です。ここでは、Parentフィールドの最後に__rを追加する必要があり、その後、親フィールドの値を取得できます。
集約関数
SOQLには、SQLにあるような集約関数があります。 集計関数を使用すると、データをロールアップして集計できます。 関数を詳細に理解しましょう。
顧客「ABC顧客」から得ている平均収益が何であるかを知りたい場合、この関数を使用して平均を取得できます。
例
デバッグログの出力を確認します。 集計関数を含むクエリは、結果を AggregateResult オブジェクトの配列で返すことに注意してください。 AggregateResultは読み取り専用のsObjectであり、クエリ結果にのみ使用されます。 大きなデータに関するレポートを生成する必要がある場合に役立ちます。
データ集計を実行するために使用できる他の集計関数もあります。
- MIN()*-これは最小値を見つけるために使用できます
- MAX()*-これは最大値を見つけるために使用できます。
Apex変数のバインド
SOQLクエリでApex変数を使用して、目的の結果を取得できます。 Apex変数は、コロン(:)表記で参照できます。