我正在努力查询,我想选择所有分支机构,然后再加入“公司(类型为帐户)”,并再次使用“联系人”。到现在为止没有运气,我做错了什么?
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>
答案 0 :(得分: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);
}
答案 1 :(得分: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语句时使用Force.com Explorer来浏览元数据,而不是查看WSDL。