ID를 기반으로 계정의 계층 모델을 검색하는 방법을 아는 사람 있습니까?계층 적 SOQL 쿼리
이 쿼리를 사용했지만 모든 자식 노드가 첫 번째 집합입니다.
select a.Name,a.parentId,a.ownerid,a.id from Account a where Parent.id ='00711314'
ID를 기반으로 계정의 계층 모델을 검색하는 방법을 아는 사람 있습니까?계층 적 SOQL 쿼리
이 쿼리를 사용했지만 모든 자식 노드가 첫 번째 집합입니다.
select a.Name,a.parentId,a.ownerid,a.id from Account a where Parent.id ='00711314'
SOQL 계층 적 검색을 지원하지 않습니다, 당신은 각 레벨이 아이디의 목록을 생성하고 어디 운영자 in <list>
를 사용하여 다음 단계를 검색하기위한 레벨로 레벨을 검색 할 수 있습니다.
주지사 제한 사항이 적용되지만 큰 나무가있는 경우 매우 제한이 많습니다.
select a.Name,a.parentId,a.ownerid,a.id from Account a where a.parentId ='00711314'
이미 언급했듯이 SOQL로 계층 적 검색을 사용할 수 없습니다.
map<id, list<id>> mapParentToChildren = new map<id, list<id>>();
for(Record__c [] sRecordArr : [select Id, Parent__c from Record__c limit 10000])
{
for(Record__c sRecord : sRecordArr)
{
if(mapParentToChildren.get(sRecord.Parent__c) == null)
{
mapParentToChildren.put(sRecord.Parent__c, new list<id>{sRecord.Id});
}
else
{
mapParentToChildren.get(sRecord.Parent__c).add(sRecord.Id);
}
}
}
: 나는 다른 객체와이 기능을 필요로했다 (내가 < 10,000 행이 알고있을 때) 나는 모든 레코드를 선택한 때, 대신 메모리 계층 구조를 구축하기 위해 목록의지도를 사용 그런 다음 (테스트되지 않은) 예를 들어, 데이터 등의 작업을 수행 할 수 재귀 함수를 사용할 수있다 :
// top level records will have a null parent, so be in the 'null' list
for(id idRecord : mapParentToChildren.get(null))
{
PrintTree(idRecord, 0);
}
public void PrintTree(id idRecord, int iLevel)
{
string strLevel = '*';
for(integer i = 0; i < iLevel; i++)
{
strLevel += '*';
}
System.Debug(strLevel + idRecord);
if(mapParentToChildren.get(idRecord) != null)
{
for(id idChild : mapParentToChildren.get(idRecord))
{
PrintTree(idChild, iLevel + 1);
}
}
}
이 코드는 (난 그냥 바로 브라우저에이 버전을 작성했습니다) 비효율적이고 안된입니다 플랫폼에서 계층 적 데이터를 처리하는 방법에 대한 아이디어를 제공해야합니다.
당신이 당신의 계층 구조 수준의 제한된 수의이 알고, 당신은 각 레벨에서 필드의 제한된 수를 조회하는 경우에는이 같은 작업을 수행 할 수 있습니다
select Id, Name, ownerid,
parent.Id, parent.Name, parent.OwnerId,
parent.parent.Id, parent.parent.Name, parent.parent.OwnerId,
parent.parent.parent.Id, parent.parent.parent.Name, parent.parent.parent.OwnerId
from Account where Parent.id ='00711314'
그것은 추한하지만, 수 단일 쿼리에서 고정 된 수의 계층 구조 레벨을 얻을 수 있습니다.
잘못된 ID 필드를 제공합니다 00711314 – karthick
질문에 제공 한 ID를 사용하기 만하면 실제 Salesforce ID를 대신 사용해야합니다. –