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 的限制。

您只能通过这种方式同时列出所有与 Accounts 相关的 Contacts 与 Branches 相关:

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 上 Account 关系字段的 API 名称。

我不确定这是否会有所帮助,但这可能就足够了。

另外,我建议在编写 SOQL 语句时使用Force.com Explorer来浏览元数据,而不是通过 WSDL 来查看。

于 2012-07-25T14:43:41.937 回答