SalesForce中的soql连接查询

SalesForce中的soql连接查询,salesforce,soql,Salesforce,Soql,我正在努力进行一个查询,我想选择所有的分支机构,并再次与其中的联系人“加入”公司(Account类型)。直到现在都没有运气,我做错了什么 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 此部分

我正在努力进行一个查询,我想选择所有的分支机构,并再次与其中的联系人“加入”公司(Account类型)。直到现在都没有运气,我做错了什么

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="Account"> .. <element name="Contacts" nillable="true" minOccurs="0" type="tns:QueryResult"/> .. </complexType> .. .. .. .. .. 当你说“账户类型”时,你的意思是“公司”是账户的标签吗

如果是,请尝试以下方法:

Select 
  Name, Id, 
  (Select FirstName, LastName From Contacts Where MailingCity = 'New York')
From Account 
Where ID IN (Select CompanyID From Branch__c)
其中CompanyID是分支机构c上帐户关系字段的API名称

我不确定这是否会有帮助,但从现在开始就足够了


另外,我建议在编写SOQL语句时使用来浏览元数据,而不是浏览WSDL。

有一个@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);
}

它是否会在SOQL语句中抛出任何类型的错误,还是只返回0行?@JCD Error是
第14行:第24列的错误嵌套查询的第一个SObject必须是其外部查询的子对象。
我相当确定这与Salesforce限制有关,该限制禁止对与父对象没有直接关系的对象执行子查询。您可能需要在两个单独的查询中写入此内容-第一个用于检索Branche_____c记录及其相关公司的__c记录,然后另一个用于检索与这些公司相关的联系人记录。@JCD是的,我担心这会是问题所在,SF的限制。。。thnx!这个问题似乎离题了,因为它是关于salesforce的,应该转移到SET的salesforce测试站点。唯一的问题是,他将无法访问主选择中的其他Branche_____c字段。例如位置