SalesforceのSOQLでコミュニティに質問してやっと解決したことがあったのでメモ

SOQLでは親のオブジェクトの項目を取得する際は

「SELECT {親オブジェクト名}.{項目名} FROM {子オブジェクト名}」

と指定する。

例:担当者(Contact)に紐づく取引先(Account)の項目を取得するクエリ

「SELECT Account.Name FROM Contact」

なので商談履歴オブジェクト(OpportunityHistory)から紐づく商談(Opportunity)のIdを取得しようと以下のクエリを実行したが上手くいかない

「SELECT Opportunity.Id FROM OpportunityHistory」⇒×エラー

これはOpportunityHistoryがOpportunityへのリレーション項目をもたず「OpportunityId」として商談のIDをもっているため。

なので以下のようにすると上手くいく。

「SELECT OpportunityId FROM OpportunityHistory」

リレーションクエリを作る際はリファレンスをちゃんと読んでそのオブジェクトがリレーション項目をもっているか確認しようと反省。