Вопрос о взаимоотношениях с SOQL Salesforce - PullRequest
1 голос
/ 04 сентября 2011

Я хочу получить поле userhomepage из пользовательской таблицы WebsiteUser с помощью запроса SOQL к таблице Account. Я пробовал около 10 различных запросов, но у меня не получается ...

Fe. Я пробовал SELECT field1, (SELECT userhomepage FROM User) FROM Account со всеми комбинациями __c и __r.

У меня есть следующая структура:

<complexType name="Account">
 <complexContent>
  <extension base="ens:sObject">
   <sequence>
    ...
    <element name="WebsiteUser__c" nillable="true" minOccurs="0" type="tns:ID"/>
    <element name="WebsiteUser__r" nillable="true" minOccurs="0" type="ens:WebsiteUser"/>

А таблица WebsiteUser имеет строковое поле с именем userhomepage. Как я могу поставить это в запросе? Я полностью застрял, спасибо заранее!

Ответы [ 3 ]

0 голосов
/ 05 сентября 2011

Я предполагаю, что WebsiteUser__c имеет поиск в Account, который, как я полагаю, показывает опубликованный вами фрагмент, однако он не похож на стандартный объект XML, поэтому я не на 100% уверен в том, куда он идет. с.

При поиске с WebsiteUser__c в учетную запись создается связь между несколькими пользователями веб-сайта и одной учетной записью. Если бы вы выбирали из таблицы пользователей сайта, вы бы сделали что-то вроде:

select Id, UserHomePage__c, Account__r.Name
from WebsiteUser__c where some conditional

Для запроса наоборот требуется подзапрос:

select Id, Name, (select Id, UserHomePage__c from WebsiteUser__r)
from Account

Это вернет Account со списком всех WebsiteUser__c записей, которые связаны с ним, вы можете просмотреть результаты так:

for(Account sAcct : select  Id, Name,
                            (select Id, UserHomePage__c from WebsiteUser__r)
                    from    Account limit 200)
{
    for(WebsiteUser__c sUser : sAcct.WebsiteUser__r)
    {
        System.Debug(sUser.UserHomePage__c);
        // etc.

Некоторые вещи, на которые следует обратить внимание, это то, что WebsiteUser__r может быть множественным числом, то есть WebsiteUsers__r, и если вы перепробовали все комбинации и это не работает, убедитесь, что вы не указали __c или __r самостоятельно в имя объекта API, система делает это автоматически, так что вы получите поля, заканчивающиеся на __c__c или __r__r.

Если вы скажете, на какой информации вы должны основывать запрос, я мог бы сделать этот ответ более конкретным для вас!

0 голосов
/ 03 октября 2011
SELECT id, (SELECT UserHomePage__c FROM WebsiteUser__r) FROM ACCOUNT

if websiteUser__r is the child relation

SELECT id, WebsiteUser__r.UserHomePage__c FROM ACCOUNT

if websiteUser__r is the parent relation

мне кажется, что это родительские отношения, поэтому я думаю, что последующий запрос будет работать ...

Надеюсь, это поможет

0 голосов
/ 05 сентября 2011

Может быть, запрос типа «ребенок-родитель» будет работать.

Попробуйте это?

SELECT Account__r.field1, userhomepage FROM WebsiteUser__c

Соответствующая документация:

http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_calls_soql.htm

...