function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
sihmeieossihmeieos 

参照関係にある複数のオブジェクトのデータ取得

こんにちは。

 

テーブルの結合について ともかぶるかもしれませんが、参照関係にある複数のオブジェクトの項目を一気に取得したい場合、

SOQLでどのように実現すれば良いのか困っています。

 

[SQL]

 

select a.Name, b.Name from tableA a, tableB b where a.Id = b.Id;

 

Apexだと、いくつかSELECT文を書いて変数を使ってデータ取得すれば良いのですが、できればSOQLでさくっと取得

できるものならしたいと思っています。また、Apex中に埋め込むSOQLを事前にApexExplorerで確認するためにも

使いたいです。

これまで調べてきた中だと、親子関係にあるオブジェクトや、参照関係にあるオブジェクトのうち1つのオブジェクトの項目を

取得することはできるようですが、参照関係にあるオブジェクトから複数のオブジェクトの項目を取得する方法が未だに

わかりません。

 

[子→親オブジェクトへのデータ参照]

SELECT Id, Name, parent.Id, parent.Name 

FROM Child;

 [親→子オブジェクトへのデータ参照]

 

SELECT Id, Name, (SELECT Id, Name FROM Child)FROM Parent;

 

 [参照関係にある2つのオブジェクトから1つのオブジェクトの項目のみ取得]

 

SELECT Id, NameFROM tableAWHERE Id IN (SELECT Id from tableB);

 

 SOQL単体では、参照関係にある複数のオブジェクトの項目を取得することは不可能なのでしょうか。(SQLの例のように)

それとも何か方法があるのでしょうか。

 

【参考】

Force.com Blog:Salesforceのアプリケーション・データモデル 

DeveloperBoardJP:テーブルの結合について

Best Answer chosen by Admin (Salesforce Developers) 
aki124aki124

>[子→親オブジェクトへのデータ参照]

>SELECT Id, Name, parent.Id, parent.Name

>FROM Child;

 

上記のクエリが まさしく「参照関係にあるオブジェクトから複数のオブジェクトの項目を取得する」クエリだと思うのですが。。。

 

質問の意図を間違っていたら、申し訳ありません。

 

 

一応、解説しますと、

例に挙がっているクエリで使用しているオブジェクト"Parent"と"Child"は、"Child"オブジェクトに定義されている参照関係データ型の"parent"項目(参照先は"Parent"オブジェクト)によって、参照関係がひもづけられています。

一方SOQLのSELECT句の中では、「参照関係項目.参照先オブジェクトの項目」と指定することで、参照先のオブジェクトの項目も一緒に取得することが出来ます。

よって、例のクエリの場合だと、"Child"オブジェクトのId項目・Name項目と一緒に、参照先の"Parent"オブジェクトのId項目とName項目を取得できます。

 

 

All Answers

aki124aki124

>[子→親オブジェクトへのデータ参照]

>SELECT Id, Name, parent.Id, parent.Name

>FROM Child;

 

上記のクエリが まさしく「参照関係にあるオブジェクトから複数のオブジェクトの項目を取得する」クエリだと思うのですが。。。

 

質問の意図を間違っていたら、申し訳ありません。

 

 

一応、解説しますと、

例に挙がっているクエリで使用しているオブジェクト"Parent"と"Child"は、"Child"オブジェクトに定義されている参照関係データ型の"parent"項目(参照先は"Parent"オブジェクト)によって、参照関係がひもづけられています。

一方SOQLのSELECT句の中では、「参照関係項目.参照先オブジェクトの項目」と指定することで、参照先のオブジェクトの項目も一緒に取得することが出来ます。

よって、例のクエリの場合だと、"Child"オブジェクトのId項目・Name項目と一緒に、参照先の"Parent"オブジェクトのId項目とName項目を取得できます。

 

 

This was selected as the best answer
sihmeieossihmeieos

aki124さん、replyありがとうございます。

 

仰る通り、 私があげていた子→親オブジェクトへのデータ参照のクエリが参照関係にあるオブジェクトから複数のオブジェクトの項目を

取得するクエリそのものでした。 

>[子→親オブジェクトへのデータ参照]

>SELECT Id, Name, parent.Id, parent.Name

>FROM Child; 

 

[参照関係にあるオブジェクトの項目値を複数取得]

 

SELECT ID, Name, b.Id, b.NameFROM tableA.

 ※tableAからtableBへ、「b」という参照関係項目で参照関係にある場合。

 

子→親オブジェクトへのデータ参照という説明だったので、参照関係はまた別の構文になると思い込んでおりました。

 ありがとうございました!当たり前のことなのかもしれませんが、悩んでいたのでとても助かりました。