Вопрос с запросом о взаимоотношениях Salesforce SOQL

Я хочу получить поле 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. Как мне указать это в запросе? я полностью застрял, заранее спасибо!


person Bokw    schedule 04.09.2011    source источник


Ответы (3)


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

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

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

person bonkydog    schedule 04.09.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.

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

person Matt Lacey    schedule 04.09.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

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

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

person sam27    schedule 03.10.2011