SOQL-запрос для прохождения нескольких уровней в Задаче - PullRequest
1 голос
/ 10 августа 2010

Я пытаюсь написать некоторый апекс-код, используя этот запрос и нигде не получая:

List<Task> tasks = [SELECT id, whatid, who.account.parent.name FROM task WHERE who.account.parent.name LIKE 'Procter%'];

Я не удивлен, что это не работает, но, похоже, нигде не могу найти документацию, объясняющую, как мне поступить. У кого-нибудь есть идеи? Я пытаюсь привязать все задачи к контакту, связанному с учетной записью с родительской учетной записью "procter and gamble" ...

Ответы [ 4 ]

4 голосов
/ 10 августа 2010

Похоже, что параметры «идти вверх» в смешанных полях (те, где Lookup обращается к нескольким объектам, таким как WhatId для Account или Opportunity) очень ограничены.Я был в состоянии написать «ГДЕ what.name, КАК« Procter% », но не« ГДЕ what.parent.name НРАВИТСЯ «Procter%».

Кстати, я думаю, что это должен быть WhatId, а не WhoId(проверьте редактор Правил проверки для Задач, попробуйте вставить поля «Контакт / Идентификатор потенциального клиента» и «Возможный / Идентификатор учетной записи»). Вы также увидите, что вы не можете «подняться» (или в случае этого редактора -"go right") в этих полях, в то время как для некоторых других полей вы можете исследовать отношение, подобное для "CreatedBy.UserRole.Name".

Можете ли вы попробовать вместо этого этот подзапрос?

[SELECT id, whatid FROM task WHERE whatid IN (SELECT Id FROM Account WHERE Parent.Name LIKE 'United%')]
1 голос
/ 10 сентября 2010

WhatId и WhoID являются полиморфными полями, поэтому эти поля не поддерживают обход нескольких уровней.

0 голосов
/ 04 февраля 2013

Поле AccountID в Задачах заполняется SF автоматически для Контактов. Очевидно, это пустое место для потенциальных клиентов. Итак, если вы хотите получить данные учетной записи, вы можете просто сделать что-то вроде этого:

SELECT ID, Who.FirstName, Who.LastName, Account.Parent.Name ИЗ ЗАДАЧИ WHERE WhoID = '00Q12SDFUUALDLKJF'

Очевидно, что Account.Parent.Name пусто для потенциальных клиентов.

0 голосов
/ 03 июля 2012

У меня было аналогичное требование для иерархического обхода, в моем случае мне пришлось выбирать информацию о потенциальных клиентах, связанную с задачей.Мне нужно было сначала запросить список задач, затем запросить список потенциальных клиентов на основе этих задач, затем использовать класс-оболочку, чтобы объединить два списка в пользовательский объект и отобразить объект соответствующим образом с помощью visualforce.Класс-обертка, безусловно, был моим ответом на уравнение, так как кажется, что вы на самом деле не можете сделать запрос напрямую, используя Who.Id.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...