SOQL クエリが 1 つあります。クエリがリレーションシップをトラバースする場合、フィールド リストにサブクエリを含めることができます。例えば:
SELECT Account.Name, (SELECT Contact.LastName FROM Account.Contacts) FROM Account
「関係を横断する」という行が理解できませんでした。誰か説明できますか?
SOQL クエリが 1 つあります。クエリがリレーションシップをトラバースする場合、フィールド リストにサブクエリを含めることができます。例えば:
SELECT Account.Name, (SELECT Contact.LastName FROM Account.Contacts) FROM Account
「関係を横断する」という行が理解できませんでした。誰か説明できますか?
この場合、「1」側オブジェクトからのクエリ内の「多」側から1対多の関係を呼び出すことができることを意味します。事実上、これは、トップクエリのカーソルの現在の位置に基づいてサブテーブルをクエリするSQLのネストされたクエリに似ています。違いは主に、SQLでフラットに開始する結果セットとSOQLで階層的に開始する結果セットにあります。
さらにわかりやすくするために、このクエリは次のことを意味します。foreachアカウントのロード名とそのすべての連絡先をトラバースして、連絡先の姓を取得します。10の連絡先を持つアカウントが1つある場合、1つのプライマリ行が取得され、その連絡先リストには10行が含まれます
関係があり、サブクエリを使用する場合、SELECT を使用して FROM 句のテーブルと関係があるテーブルからフィールドを返すことができると彼らは言っていると思います。あなたの例では、サブクエリを使用して、FROM が "Account" からプルしているにもかかわらず、"Contact" テーブルから "LastName" を返すことができます。これは、そこに関係 ("Account.Contacts") があるためです。
有効な SQL ではありません。サブクエリには結合が必要です。そうしないと、複数のレコードが返されます。これは、メイン クエリの行ごとに 1 つのレコードという規則に違反します。