Skip to main content

사용자 정의 개체로 관계 쿼리 만들기

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 스키마 빌더로 다이어그램을 해석하여 개체 관계를 식별할 수 있습니다.
  • 사용자 정의 관계 이름을 식별하여 사용자 정의 개체의 쿼리에 사용할 수 있습니다.
  • 사용자 정의 개체를 위한 하위-상위 쿼리를 만들 수 있습니다.
  • 사용자 정의 개체를 위한 상위-하위 쿼리를 만들 수 있습니다.
참고

참고

한국어로 학습하시겠어요? Trailhead playground에서 한국어로 실습 과제를 시작하고, 괄호 안에 제공된 번역을 사용해 탐색해 보세요. 영어 데이터를 기반으로 실습 과제 검증이 이루어지므로 영문으로 표시된 값만 복사해 붙여 넣습니다. 한국어 조직에서 실습 과제를 통과하지 못한 경우, (1) 로캘을 미국을 바꾸고 (2) 여기에 제시된 지침에 따라 언어를 영어로 바꾼 후 (3) "Check Challenge(과제 확인)" 버튼을 눌러 다시 진행해 보세요.

원하는 언어로 Trailhead 사용하기 뱃지를 확인해 현지화된 Trailhead 경험을 활용하는 방법에 대해 자세히 알아보세요.

Trail Together로 함께 따라하기

이 단계를 진행하면서 전문가와 함께 따라하고 싶으세요? Trailhead Live의 Trail Together 시리즈에 포함된 이 비디오를 시청하세요.

(뒤로 돌려 단계를 처음부터 다시 보고 싶은 경우, 이 클립은 51:38분 표식에서 시작된다는 것을 기억하세요.)

Trailhead Playground를 실행하고 패키지 설치하기

이 모듈의 나머지 부분에 나오는 예시와 실습 활동에서는 DreamHouse라는 샘플 부동산 애플리케이션을 사용합니다. Trailhead Playground에 앱을 설치하고 샘플 데이터를 가져오세요.

Trailhead Playground가 열려 있지 않은 경우 실행합니다. 조직에 패키지 설치라는 탭이 보이면 정상입니다. 1단계로 바로 진행하세요. 그렇지 않으면 앱 시작 관리자(앱 시작 관리자)에서 Playground Starter를 찾아서 연 후 절차를 따라해 보세요. Playground Starter App이 표시되지 않으면 이 링크를 DreamHouse 패키지에 복사하고 Trailhead 지원 팀에서 Install a Package or App to Complete a Trailhead Challenge(패키지 또는 앱을 설치하여 Trailhead 과제 완료)를 확인합니다.

  1. Install a Package(패키지 설치) 탭을 클릭합니다.
  2. 04t3h000004mBpiAAE를 필드에 붙여 넣습니다.
  3. Install(설치)을 클릭합니다.
  4. Install for Admins Only(관리자 전용으로 설치)를 선택한 다음 Install(설치)을 클릭합니다.
  5. 타사 액세스를 승인해 달라는 메시지가 표시되면 Yes, grant access…(예, 액세스 허용…)를 선택한 다음 Continue(계속)를 클릭합니다.

패키지 설치가 완료되면 확인 페이지가 표시되고 Playground와 연결된 주소로 이메일이 수신됩니다.

DreamHouse 데이터 가져오기

  1. 앱 시작 관리자을 클릭하고 검색 상자에 Dream을 입력한 다음 DreamHouse 앱을 선택합니다.
  2. Settings(설정) 탭을 클릭합니다. (Settings(설정) 탭이 보이지 않는 경우 More(더 보기) 목록을 확장하세요.)
  3. Import Data(데이터 가져오기)를 클릭하세요.
  4. Properties(부동산) 탭을 클릭하고 샘플 데이터를 살펴봅니다.

DreamHouse 스키마 살펴보기

지금까지는 표준 개체만 쿼리했지만 이제 사용자 정의 개체를 쿼리하는 방법을 살펴보겠습니다. DreamHouse 앱의 개체를 사용할 것이므로 먼저 DreamHouse 스키마(데이터 모델)를 살펴보며 데이터가 구조화되는 방식을 파악해 보겠습니다.

스키마 빌더 열기

  1. Trailhead Playground에서 설정을 클릭하고 Setup(설정)을 선택합니다.
  2. Object Manager(개체 관리자)를 클릭합니다.
  3. Schema Builder(스키마 빌더)를 클릭합니다.
  4. Objects(개체) 탭에서 Clear All(모두 지우기)을 클릭합니다.
  5. Broker__c가 아닌 Broker가 표시된다면 View Options(옵션 보기)를 클릭한 다음 Display Element Names(요소 이름 표시)를 선택합니다.
  6. 코드에는 API 이름 필드를 사용한다는 점을 기억하세요. Display Element Names(요소 이름 표시)에 필드 레이블이 아닌 API 이름 필드가 표시됩니다. (사용자 정의 개체의 API 이름은 끝에 __c[밑줄 밑줄 c]가 추가된 사용자 정의 개체 이름입니다.)

  7. 'Select from list(목록에서 선택)'에서 Custom Objects(사용자 정의 개체)를 선택합니다.
  8. Broker__cProperty__c를 선택합니다. 이러한 항목이 이 유닛에서 사용할 사용자 정의 개체입니다.
  9. Auto-Layout(자동 레이아웃)을 클릭합니다.
  10. 부동산 필드를 살펴봅니다.
  11. Property__c 사용자 정의 개체에 Picture__c 및 Broker__c의 두 가지 사용자 정의 필드가 있는지 확인합니다. (사용자 정의 필드의 API 이름은 끝에 __c[밑줄 밑줄 c]가 추가된 사용자 정의 필드 이름입니다.)

    Broker__c 및 Property__c 사용자 정의 개체가 표시된 스키마 빌더. Property__c 사용자 정의 개체에서 Broker__c 및 Picture__c 사용자 정의 필드가 하이라이트되어 있습니다.

  12. Property__c 및 Broker__c를 연결하는 관계 선 위로 마우스를 가져갑니다.
  13. Property__c 사용자 정의 개체의 Broker__c 사용자 정의 필드에서 Broker__c 사용자 정의 개체로 조회 관계가 형성됩니다.

    스키마 빌더의 Broker__c 및 Property__c 사용자 정의 개체. Property__c 개체의 Broker__c 사용자 정의 필드에 Property__c 사용자 정의 개체에서 Broker__c 사용자 정의 개체로 이어지는 조회 관계가 형성되어 있습니다.

  14. Property__c 요소에서 톱니바퀴 아이콘을 클릭한 다음 View Object(개체 보기)를 선택합니다.
    개체 관리자에 Property__c 개체가 표시됩니다.
  15. Fields & Relationships(필드 및 관계)를 클릭합니다.
  16. Broker 필드 레이블을 클릭합니다.
  17. Lookup Options(조회 옵션) 섹션에서 Child Relationship Name(하위 관계 이름)을 찾습니다.

이제 Property__c가 Broker__c의 하위 요소이며 부동산과 중개업자 사이의 관계 이름이 Properties라는 점을 알게 되었습니다. (관계 이름은 일반적으로 하위 개체 이름의 복수 형식입니다.)

사용자 정의 개체 쿼리

사용자 정의 개체를 쿼리하는 것은 표준 개체를 쿼리하는 것과 상당 부분 유사하지만 몇 가지 차이점이 있습니다.

다음 요구 사항을 고려하세요.

'Get a list of all properties with the property address, picture, and assigned broker.(부동산 주소, 사진, 할당된 중개업자를 사용해 모든 부동산 목록을 가져옵니다.)'

꽤 간단합니다, 그렇죠? Property__c 사용자 정의 개체를 쿼리하고 Address__c, Picture__c, Broker__c 사용자 정의 필드를 가져와야 합니다. 시작해 보겠습니다.

쿼리 만들기

  1. 쿼리 편집기에서 다음을 입력합니다.
    SELECT Address__c, Picture__c, Broker__c FROM Property__c
  2. Execute(실행)를 클릭합니다.
    결과의 첫 여섯 개 행이 다음과 같아야 합니다.
    쿼리 결과 - 총 행 수: 12
    Address__c
    Picture__c
    Broker__c
    18 Henry st
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...
    24 Pearl st
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...
    72 Francis st
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...
    32 Prince st
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...
    110 Baxter st
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...
    448 Hannover St
    https://s3-us-west-2.amazonaws.com...
    a016g000007Yxfn...

Broker__c 열의 내용이 그다지 유용하지 않다는 점을 눈치채셨을 겁니다. 이는 Property__c 개체의 Broker__c 필드가 Broker 개체에 대한 조회이기 때문입니다. 조회 관계가 있는 필드는 관련 개체의 Id를 포함하고 있습니다. Broker의 이름을 확인하려면 관계 쿼리가 필요합니다.

하위-상위 쿼리 만들기

Broker__c가 Property__c의 상위 요소이므로 하위-상위 쿼리가 필요합니다. 관계 이름과 점 표기법을 사용하여 Broker__c 개체의 Name 필드를 가져올 것입니다.

  1. 쿼리 편집기에서 Broker__c를 다음과 같이 Broker__c.Name으로 바꿉니다
    SELECT Address__c, Picture__c, Broker__c.Name FROM Property__c
  2. Execute(실행)를 클릭합니다. (오류 메시지가 표시됩니다.)
    오류 메시지
    필드 경로에서 관계 'Broker__c'를 파악할 수 없습니다. 사용자 정의 관계를 사용하려면 사용자 정의 관계 이름 뒤에 '__r'을 붙여야 합니다.

이런! 무슨 일일까요? Broker__c는 Property 개체의 사용자 정의 필드라는 점을 기억하세요. 필요한 것은 Broker__c 관련 개체입니다.

쿼리에 사용자 정의 관계 이름 사용하기

Broker__c 관련 개체(Broker__c 필드 아님)를 지정하려면 __c를 __r(밑줄-밑줄-r)로 바꿉니다. Broker__r은 사용자 정의 관계 이름입니다. 이는 관계를 Property__c에서 Broker__c 개체로 전환시켜야 한다는 것을 의미합니다. 이 부분의 쿼리가 다음과 같은 메시지를 표시합니다. 'Get the Name field from the related Broker__c custom object.(관련 Broker__c 사용자 정의 개체에서 Name 필드를 가져옵니다.)' 쿼리를 업데이트해 보겠습니다.

  1. 쿼리 편집기에서 Broker__c를 다음과 같이 Broker__r로 바꿉니다.
    SELECT Address__c, Picture__c, Broker__r.Name FROM Property__c
  2. Execute(실행)를 클릭합니다.

    결과의 첫 여섯 개 행이 다음과 같아야 합니다.
    쿼리 결과 - 총 행 수: 12
    Address__c
    Picture__c
    Broker__r.Name
    18 Henry st
    https://s3-us-west-2.amazonaws.com...
    Caroline Kingsley
    24 Pearl st
    https://s3-us-west-2.amazonaws.com...
    Michael Jones
    72 Francis st
    https://s3-us-west-2.amazonaws.com...
    Jonathan Bradley
    32 Prince st
    https://s3-us-west-2.amazonaws.com...
    Jennifer Wu
    110 Baxter st
    https://s3-us-west-2.amazonaws.com...
    Olivia Green
    448 Hannover St
    https://s3-us-west-2.amazonaws.com...
    Miriam Aupont

훨씬 나아졌군요. 이제 Broker 사용자 정의 개체에 Id가 아닌 Name 필드가 표시됩니다.

상위-하위 쿼리 만들기

관련 중개업자를 사용해 각 부동산을 성공적으로 반환했습니다. 반대의 경우는 어떨까요?

요구 사항:

'Get the names of all brokers with the address and price of all properties assigned to each broker.(각 중개업자에 할당된 모든 부동산의 주소 및 가격을 사용해 모든 중개업자의 이름을 가져옵니다.)'

중개업자의 목록이 필요하므로 기본 쿼리에서 Broker__c 개체를 쿼리합니다.

SELECT Name FROM Broker__c

Broker는 상위 요소이므로 상위-하위 쿼리에 하위 개체의 보조 쿼리가 필요합니다. 보조 쿼리에 하위 관계 이름을 사용해 보겠습니다.

Property__c 개체의 보조 쿼리에 대한 관계 이름은 무엇일까요? Property 개체의 Broker 필드에 대한 세부 정보를 확인합니다.

Property 개체의 Broker 필드에 대한 Details(세부 정보) 페이지의 Lookup Options(조회 옵션)에서 Child Relationship Name(하위 관계 이름)이 Properties입니다.

Child Relationship Name(하위 관계 이름)이 Properties입니다. 이는 사용자 지정 관계이기 때문이며 쿼리에 사용할 때는 __r을 붙입니다(Properties__r). 따라서 보조 쿼리(괄호 안)는 다음과 같습니다.

(SELECT Address__c, Price__c FROM Properties__r)

기본 쿼리에 보조 쿼리를 삽입하면 전체 쿼리는 다음과 같습니다.

SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c

쿼리 실행

  1. 쿼리 편집기에서 다음을 입력합니다.
    SELECT Name, (SELECT Address__c, Price__c FROM Properties__r) FROM Broker__c
  2. Execute(실행)를 클릭합니다.
    결과의 첫 여덟 개 행이 다음과 같아야 합니다.

    쿼리 결과: 총 행 수: 8. 첫 번째 열에는 중개업자 이름이 나열되어 있습니다. 두 번째 열에는 부동산 주소 및 가격의 쉼표로 구분된 목록이 포함되어 있습니다.

완벽해요! 모든 중개업자 목록과 각 중개업자 부동산의 쉼표로 구분된 목록을 확보했습니다. 쿼리를 만드는 경우 Developer Console의 쿼리 편집기를 사용하면 SOQL 쿼리를 쉽게 테스트하고 수정할 수 있습니다.

리소스

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기