3

クエリに苦労しています。すべてのブランチを選択し、そこにある連絡先を使用して (アカウント タイプの) 会社に「参加」したいと考えています。今まで運が悪かったのですが、何が間違っていますか?

SELECT 
b.Id, b.Location,
  (SELECT FirstName, LastName, FROM b.Companies.Contacts 
    //i've tried combinations of __r and __c
  WHERE City == 'New York')  
FROM Branche__c b

この部分の WSDL は次のように構築されます。

<complexType name="Branche__c">
  ..
     <element name="Companies__r" nillable="true" minOccurs="0" type="ens:Account"/>
  ..
</complexType>
..
<complexType name="アカウント">
  ..
  <element name="Contacts" nillable="true" minOccurs="0" type="tns:QueryResult"/>
  ..
</complexType>
4

2 に答える 2

2

@JCD があるとおっしゃいましたが、これは Salesforce の制限です。

この方法でのみ、アカウントに関連するすべての連絡先を同時にリストすることができます:

SELECT Email, Account.Name, 
FROM Contact
WHERE AccountId in (
 SELECT Companies__c
   FROM Branche__c
)

しかし、これらの連絡先ブランチを結合したい場合は、次のようにしてください:

list[] res = new list[]{};
for (Branche__c br : [SELECT Id, Location ,Companies__c FROM Branche__c])
{
     List[] ContactList = [select name, (select email from contacts) from account where id = :br.Companies__c]; 
     res.add(ContactList);
}
于 2012-07-25T17:55:40.350 に答える
0

「アカウントの種類」と言うとき、「会社」はアカウントのラベルということですか?

もしそうなら、これを試してください:

Select 
  Name, Id, 
  (Select FirstName, LastName From Contacts Where MailingCity = 'New York')
From Account 
Where ID IN (Select CompanyID From Branch__c)

CompanyID は、Branch__c のアカウント関係フィールドの API 名です。

それが役立つかどうかはわかりませんが、最初から十分かもしれません。

また、SOQL ステートメントを記述するときは、WSDL を参照するのではなく、Force.com Explorerを使用してメタデータを参照することをお勧めします。

于 2012-07-25T14:43:41.937 に答える