Полное руководство по родительским запросам SOQL: методы и примеры

Введение

При разработке Salesforce для запроса данных из базы данных Salesforce используется SOQL (язык объектных запросов Salesforce). Родительские запросы SOQL специально разработаны для извлечения записей из родительского объекта в отношениях родитель-потомок. В этой статье мы рассмотрим различные методы выполнения родительских запросов SOQL, а также приведем примеры кода, иллюстрирующие их использование.

Метод 1: базовый родительский запрос

Самый простой метод получения родительских записей — использование базового родительского запроса. Этот метод включает в себя запрос дочернего объекта и включение поля связи для доступа к родительским записям. Вот пример:

List<Account> accounts = [SELECT Id, Name, (SELECT Id, Name FROM Contacts) FROM Account];

В этом фрагменте кода мы получаем список учетных записей и связанных с ними контактов. Часть запроса (SELECT Id, Name FROM Contacts)позволяет нам получить доступ к связанным контактам для каждой учетной записи.

Метод 2: использование имен связей

Salesforce предоставляет имена отношений для упрощения запроса родительских записей. Эти имена являются производными от имени API поля отношений и добавляются к ним с помощью «__r». Вот пример:

List<Contact> contacts = [SELECT Id, Name, Account.Name FROM Contact];

В этом запросе мы напрямую обращаемся к родительскому объекту Account, используя имя связи Account. Добавив .Name, мы можем получить имя учетной записи для каждого контакта.

Метод 3: использование точечной записи

Точечная нотация в SOQL позволяет нам просматривать отношения между объектами и получать доступ к родительским записям. Вот пример:

List<Case> cases = [SELECT Id, Subject, Account.Name FROM Case];

В этом запросе мы извлекаем случаи, а также получаем доступ к связанному объекту Account, используя точечную нотацию Account.Name. При этом будет получено имя учетной записи для каждого случая.

Метод 4: подзапрос от родителя к дочернему элементу

В некоторых случаях нам может потребоваться получить родительскую запись вместе со всеми ее дочерними записями в одном запросе. Мы можем добиться этого, используя подзапрос от родителя к дочернему элементу. Вот пример:

List<Account> accounts = [SELECT Id, Name, (SELECT Id, LastName FROM Contacts) FROM Account];

В этом запросе мы извлекаем аккаунты вместе со связанными с ними контактами. Подзапрос (SELECT Id, LastName FROM Contacts)извлекает все контакты, относящиеся к каждой учетной записи.

Заключение

В этой статье мы рассмотрели несколько методов выполнения родительских запросов SOQL в Salesforce. Мы рассмотрели основные родительские запросы, используя имена отношений, запись через точку и подзапросы «родитель-потомок». Понимание этих методов поможет вам эффективно извлекать родительские записи и связанные с ними данные в приложениях Salesforce.

Не забывайте оптимизировать запросы с учетом конкретных вариантов использования, чтобы повысить производительность. Приятного кодирования!