2010-08-09 6 views
1

내가이 쿼리를 사용하여 일부 정점 코드를 작성하려고 어디서나받지 못했습니다에 여러 레벨을 통과하기 :SOQL 쿼리 작업

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

나는이 작동하지 않는 놀라지 아니지만, 할 수 없습니다 어떻게 내가이 일을 할 것인지 설명하는 곳 어디에서나 문서를 찾는 것 같습니다. 누구 아이디어가 있습니까? "procter and gamble"의 상위 계정을 가진 계정에 연결된 연락처에 연결된 모든 작업을 얻으려고합니다. ...

답변

4

혼합 된 필드에서 "올라가는"옵션처럼 보입니다. Lookup은 Account 또는 Opportunity로가는 WhatId와 같은 여러 오브젝트로 이동합니다)는 매우 제한적입니다. 나는 "what.name LIKE 'Procter %'가 아니라 WHERE what.parent.name LIKE 'Procter %'와 같은 WHERE whatnamename LIKE를 쓸 수있었습니다.

그건 그렇고 WhoId가 아니라고 생각합니다. (check Tasks의 유효성 검사 규칙 편집기에서 "Contact/Lead ID"및 "Opportunity/Account ID"필드를 삽입하십시오) 또한 "올라갈 수 없습니다"(또는이 편집기의 경우 - "go 바로 WhatId

[SELECT id, whatid FROM task WHERE whatid IN (SELECT Id FROM Account WHERE Parent.Name LIKE 'United%')] 
1

?

당신이 대신 하위 쿼리를 시도 할 수 있습니다. CreatedBy.UserRole.Name "")이 필드에 다른 필드 당신을 위해 같은 관계를 탐색 할 수 있습니다 동안 "과 다형성 Fi를 WhoID 있습니다 따라서이 필드는 여러 레벨을 통과하는 것을 지원하지 않습니다.

0

필자는 계층 적 트래버스에 대한 비슷한 요구 사항을 가지고 있었는데, 제 경우에는 작업과 관련된 리드 정보를 선택해야했습니다. 먼저 작업 목록을 쿼리 한 다음 해당 작업을 기반으로하는 리드 목록을 쿼리 한 다음 래퍼 클래스를 사용하여 두 목록을 사용자 지정 개체로 결합하고 그에 따라 Visualforce를 사용하여 개체를 표시합니다. 래퍼 클래스는 확실히 당신이 Who.Id를 사용하여 직접 쿼리 할 수 ​​없다고 생각하기 때문에 방정식에 대한 내 대답이었습니다.

희망이 도움이됩니다.

0

작업의 AccountID 필드에는 연락처에 대한 SF가 자동으로 채워집니다. 분명히 그것은 리드에게는 공백입니다. WHERE WhoID = '00Q12SDFUUALDLKJF'

분명히 Task에서

SELECT ID, Who.FirstName, Who.LastName, Account.Parent.Name : 당신은 계정 데이터를 얻을하려는 경우, 당신은 단지 같은 것을 할 수 있습니다 Account.Parent.Name은 Leads에 대해 비어 있습니다.

관련 문제