KEMBAR78
SOQL Query in Salesforce Apex & Examples | PDF | Variable (Computer Science) | Sql
0% found this document useful (0 votes)
217 views39 pages

SOQL Query in Salesforce Apex & Examples

Uploaded by

beingmpsingh2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
217 views39 pages

SOQL Query in Salesforce Apex & Examples

Uploaded by

beingmpsingh2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 39

11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

Reviews Contact Us

SOQL Query in Salesforce Apex & Examples

SOQL Query in Salesforce Apex and programming examples

Table of Contents

What is SOQL?
SOQL Cheat Sheet

SOQL Variable Binding


Keywords Used In SOQL Queries

Traversing Relationship Fields


Fetching Child Records
Fetching Parent Record

Aggregate Functions Whatsapp Chat

Binding Apex Variables

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 1/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

How to Start with SOQL?


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
What are the differences between SOQL, SOSL, and SQL?
How to write a basic SOQL Query?
Reviews Contact Us
How to find Object and Field API Names for your Queries?

How to use SOQL in Apex?


Banking & Finance SOQL Examples

Healthcare SOQL Examples


Airlines SOQL Examples
Logistics SOQL Examples

Education SOQL Examples


FAQs

What is SOQL in Salesforce?


SOQL stands for Salesforce Object Query Language. SOQL can be used to access
information stored in your organization’s database. The syntax of SOQL is similar to that of
SQL (Structured Query Language).SOQL queries can be written in Apex code or in the
Query Editor of the Developer Console. In Soql records can only be searched on a single
sObject if it meets the given criteria. Unlike SOSL, it cannot search across multiple objects
but nested queries are supported in SOQL.

Hyderabad has emerged as a thriving tech city, attracting global corporations and
fostering a high demand for skilled professionals. Salesforce is one of the most
sought-after skills due to its crucial role in CRM and business management. Opting
for our job-oriented Salesforce training in Hyderabad offers a significant edge, as the
city’s robust job market is consistently growing. Leading companies like Google,
Amazon, and Microsoft are actively searching for certified Salesforce experts to
manage and optimize our Salesforce systems. Enroll for demo today!

Code Example: Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 2/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

// Fetching the Records via SOQL


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
// Create a list to store the queried invoice records
List<apex_invoice__c> invoiceList = new List<apex_invoice__c>();

try {
Reviews Contact Us
// Querying the invoice records with specific criteria
// Selecting fields Id, Name, APEX_Customer__r.Name, APEX_Status__c
// from the APEX_Invoice__c object where the record was created today
// and the customer name is not 'Test'
invoiceList = [SELECT Id, Name, APEX_Customer__r.Name, APEX_Status__c
FROM APEX_Invoice__c
WHERE CreatedDate = TODAY AND APEX_Customer__r.Name != 'Test'];

// Printing the total number of fetched records


System.debug('We have a total of ' + invoiceList.size() + ' records in the list')

// Looping through each fetched record and printing its values


for (apex_invoice__c objInvoice : invoiceList) {
// Printing the record's values
System.debug('Record value: ' + objInvoice);
}
} catch (Exception e) {
// Handling any exceptions that might occur during the query execution
System.debug('An error occurred: ' + e.getMessage());
}

Explanation:

1. Fetching Records via SOQL: We’re using a Salesforce Object Query Language (SOQL)

query to retrieve records from the APEX_Invoice__c object.


2. Query Criteria: We’re querying records created today ( CreatedDate = TODAY ) and

whose customer name is not ‘Test’ ( APEX_Customer__r.Name != 'Test' ).


3. Error Handling: We’ve added a try-catch block to catch any exceptions that might occur

during the query execution.

4. Printing Records: We’re printing the total number of fetched records and looping

through each record to print its values using System.debug() . This helps in debugging
Whatsapp Chat
and understanding the data retrieved from the query.

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 3/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

SQL (Structured Query Language) is the standard language for managing and manipulating
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
databases. Here’s an overview of the basic syntax used in SQL to perform common
operations such as selecting data, inserting records, updating records, and deleting records.
Reviews Contact Us
Checkout: SOSL Query in Salesforce Apex

1. SELECT Statement

The SELECT statement is used to select data from a database. Data is retrieved from one or
more tables.

Syntax:

SELECT column1, column2, ...


FROM tableName
WHERE condition;

2. INSERT INTO Statement

The INSERT INTO statement is used to insert new records into a table.

Syntax:

INSERT INTO tableName (column1, column2, ...)


VALUES (value1, value2, ...);

3. UPDATE Statement

The UPDATE statement is used to modify the existing records in a table.

Syntax:

UPDATE tableName
SET column1 = value1, column2 = value2, ...
WHERE condition;
Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 4/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Read more: Database methods – Salesforce Apex


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
4. DELETE Statement

The DELETE Contact


Reviews statement
Us is used to delete existing records from a table.

Syntax:

DELETE FROM tableName


WHERE condition;

5. CREATE TABLE Statement

The CREATE TABLE statement is used to create a new table in the database.

Syntax:

CREATE TABLE tableName (


column1 dataType constraints,
column2 dataType constraints,
...
);

Additional Clauses

WHERE: Specifies conditions for the SELECT , UPDATE , and DELETE statements.
ORDER BY: Orders the results according to one or more columns.

GROUP BY: Groups rows that have the same values in specified columns into summary

rows.

HAVING: Specifies a condition on the groups being created.

Read more: DML in Salesforce Apex

CRS Info Solutions offers a comprehensive and dynamic Salesforce online course career
Whatsapp Chat
building program for beginners, covering admin, developer, and LWC concepts. This course
features immersive real-time projects, interactive hands-on learning, detailed daily notes,
https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 5/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

essential interview questions, thorough certification preparation, and strategic job prep
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
guidance. Join their inspiring free demo to embark on an exciting Salesforce journey
with expert mentorship and unlock your full potential in the Salesforce
ecosystem.
Reviews Enroll
Contactfor
Us a free demo today!

SOQL Cheat Sheet

Command Description Example

SELECT Retrieves fields from SELECT Name FROM Account


specified objects.

FROM Specifies the object from SELECT Name FROM Contact


which to retrieve data.

WHERE Filters results based on SELECT Name FROM Account WHERE Industry =
specified conditions. 'Finance'

LIMIT Restricts the number of rows SELECT Name FROM Account LIMIT 5
returned.

ORDER BY Specifies the order of SELECT Name FROM Account ORDER BY Name ASC
returned rows.

GROUP BY Groups results by one or SELECT Count(), Industry FROM Account GROUP
more fields. BY Industry

HAVING Filters grouped records SELECT Industry, Count(Id) FROM Account


returned by a GROUP BY GROUP BY Industry HAVING Count(Id) > 5
clause.

LIKE Filters results by pattern SELECT Name FROM Contact WHERE Email LIKE
matching. '%@example.com'

IN Filters results to include SELECT Name FROM Account WHERE Industry IN


specified values in a field. ('Banking', 'Insurance')

INCLUDES Used in multi-select picklists SELECT Name FROM Account WHERE Industries__c
to select values. INCLUDES ('Banking', 'Insurance')

EXCLUDES Used in multi-select picklists SELECT Name FROM Account WHERE Industries__c
to exclude values. EXCLUDES ('Retail')

TYPEOF For polymorphic SELECT TYPEOF What WHEN Account THEN Phone,
Whatsapp Chat
relationships, specifies NumberOfEmployees WHEN Opportunity THEN

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 6/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Command Description Example


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
different fields for different Amount, StageName ELSE Name, Title END FROM
related objects. Task

Reviews
SOQL Cheat SheetContact Us

This cheat sheet covers the basic syntax and common uses of SOQL commands to help with
quick reference during development.

Read more: Strings in Salesforce Apex

SOQL Variable Binding


SOQL (Salesforce Object Query Language) variable binding allows you to use a single set of
query string and dynamically pass values to the query at runtime. This helps prevent SOQL
injection and makes your queries more efficient.

Example:

Consider a simple SOQL query without variable binding:

String name = 'John';


List<Account> accounts = [SELECT Id, Name FROM Account WHERE Name = :name];

In this example, :name is a bind variable that gets replaced with the value of the name
variable when the query is executed. This approach helps protect against SOQL injection
and allows for more flexible query construction.

Collection is one of the important concept, checkout: Collections in Salesforce Apex

Keywords Used In SOQL Queries


In Salesforce Object Query Language (SOQL), keywords play a crucial role in crafting
precise and effective queries to retrieve data from Salesforce objects. These keywords, such
Whatsapp Chat
as SELECT, FROM, WHERE, and ORDER BY, among others, provide the structure and logic
necessary to filter, sort, and manipulate data according to specific criteria. Understanding
https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 7/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

and utilizing these keywords effectively is essential for Salesforce developers and
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
administrators to extract meaningful insights and drive informed decision-making within their
organizations.
Reviews Contact Us
SELECT: Retrieves one or more fields from an object.

SELECT Id, Name FROM Account

FROM: Specifies the object from which to retrieve records.

SELECT Id, Name FROM Account

WHERE: Filters records based on specified criteria.

Read more: Arrays in Salesforce Apex

SELECT Id, Name FROM Account WHERE Industry = 'Technology'

ORDER BY: Specifies the sorting order for the query results.

SELECT Id, Name FROM Account ORDER BY CreatedDate DESC

GROUP BY: Groups query results by specified fields.

SELECT Industry, COUNT(Id) FROM Account GROUP BY Industry

HAVING: Adds additional filtering after GROUP BY.


Whatsapp Chat

SELECT Industry, COUNT(Id) FROM Account GROUP BY Industry HAVING COUNT(Id) > 1

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 8/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

LIMIT: Specifies the maximum number of records to return.


Reviews Contact Us

SELECT Id, Name FROM Account LIMIT 10

OFFSET: Skips a specified number of records before returning results.

Checkout: DML statements in Salesforce

SELECT Id, Name FROM Account LIMIT 10 OFFSET 5

IN: Specifies a list of values for a field.

SELECT Id, Name FROM Account WHERE Industry IN ('Technology', 'Finance')

NOT IN: Specifies a list of values not to include.

SELECT Id, Name FROM Account WHERE Industry NOT IN ('Retail', 'Healthcare')

LIKE: Performs a partial match search.

SELECT Id, Name FROM Account WHERE Name LIKE '%Corp%'

AND: Combines multiple conditions in a WHERE clause.

SELECT Id, Name FROM Account WHERE Industry = 'Technology' AND AnnualRevenue > 100000

Whatsapp Chat

OR: Specifies multiple conditions, of which at least one must be true.

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 9/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Checkout: Data types in Salesforce Apex


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

SELECT Id, Name FROM Account WHERE Industry = 'Technology' OR Industry = 'Finance'

Reviews Contact Us

FOR UPDATE: Locks the selected rows for update.

SELECT Id, Name FROM Account WHERE Name = 'Acme' FOR UPDATE

ALL ROWS: Allows querying of all records, including archived and deleted records

SELECT Id, Name FROM Account WHERE Name = 'Acme' ALL ROWS

Traversing Relationship Fields in SOQL


Let’s traverse relationship fields in Salesforce using an example. Suppose we have two
custom objects: Account and Contact , where Contact has a lookup relationship to
Account called Account__c . Here’s how we can traverse the relationship fields:

// Querying Contacts and their related Account information


List<Contact> contactsWithAccountInfo = [SELECT Id, Name, Email, Account__r.Name, Acc
FROM Contact];

// Iterating through the queried contacts


for (Contact contact : contactsWithAccountInfo) {
// Accessing contact fields
String contactName = contact.Name;
String contactEmail = contact.Email;

// Accessing related Account fields


// Using Account__r.Name to access the Name field of the related Account
String accountName = contact.Account__r.Name;

// Using Account__r.Industry to access the Industry field of the related Account


String accountIndustry = contact.Account__r.Industry;

// Printing contact and related Account information


Whatsapp Chat
System.debug('Contact Name: ' + contactName);
System.debug('Contact Email: ' + contactEmail);
System.debug('Related Account Name: ' + accountName);
https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 10/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

System.debug('Related Account Industry: ' + accountIndustry);


}
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

Reviews Contact Us
Explanation:

1. SOQL Query: We are querying Contact records along with their related Account
information using a SOQL query. We use Account__r.Name and Account__r.Industry

to access fields from the related Account object. The _r signifies that we are traversing a
relationship.
2. Iteration: We loop through the queried Contact records using a for loop.

3. Accessing Fields: Within the loop, we access fields of both the Contact and its related
Account using dot notation ( . ). For example, contact.Account__r.Name accesses

the Name field of the related Account .


4. Debugging: We print out information about each Contact and its related Account using

System.debug() statements for debugging purposes.

Read more: Salesforce apex programming examples

Fetching Child Records in SOQL


Let’s fetch child records related to a parent record in Salesforce using an example. We’ll
consider a scenario where we have two custom objects: Account (parent) and Contact
(child), with a lookup relationship from Contact to Account . Here’s how we can fetch child
records ( Contact ) related to a parent record ( Account ):

// Define the ID of the parent Account record


Id parentAccountId = 'Insert_Account_ID_Here'; // Replace with actual Account ID

// Querying child Contact records related to the parent Account


List<Contact> childContacts = [SELECT Id, Name, Email
FROM Contact
WHERE AccountId = :parentAccountId]; Whatsapp Chat

// Iterating through the queried child Contact records

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 11/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

for (Contact childContact : childContacts) {


Home// Accessing
About Us child Contact
Courses fields
Registration Interview Questions Free Salesforce Tutorials
String contactName = childContact.Name;
String contactEmail = childContact.Email;

Reviews Contactchild
// Printing Us Contact information
System.debug('Contact Name: ' + contactName);
System.debug('Contact Email: ' + contactEmail);
}

Explanation:

1. Parent Account ID: We define the ID of the parent Account record from which we want

to fetch child Contact records. Replace 'Insert_Account_ID_Here' with the actual ID

of the parent Account .

2. SOQL Query: We use a SOQL query to retrieve child Contact records ( SELECT Id,
Name, Email FROM Contact WHERE AccountId = :parentAccountId ). We filter the

contacts based on the AccountId field, which represents the lookup relationship to the

parent Account .
3. Iteration: We loop through the queried child Contact records using a for loop.

4. Accessing Fields: Within the loop, we access fields of each child Contact using dot

notation ( . ). For example, childContact.Name accesses the Name field of the child

Contact .
5. Debugging: We print out information about each child Contact using System.debug()

statements for debugging purposes.

Read more: Loops in Salesforce Apex

Fetching Parent Record in SOQL


Let’s fetch the parent record related to a child record in Salesforce using an example. We’ll
consider a scenario where we have two custom objects: Account (parent) and Contact
Whatsapp Chat
(child), with a lookup relationship from Contact to Account . Here’s how we can fetch the
parent record ( Account ) related to a child record ( Contact ):
https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 12/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

// Define the ID of the child Contact record


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
Id childContactId = 'Insert_Contact_ID_Here'; // Replace with actual Contact ID

// Querying the parent Account record related to the child Contact


Contact childContact
Reviews Contact Us = [SELECT Id, Name, Email, AccountId, Account.Name, Account.Indu
FROM Contact
WHERE Id = :childContactId];

// Accessing parent Account fields from the related Contact record


String accountId = childContact.AccountId;
String accountName = childContact.Account.Name;
String accountIndustry = childContact.Account.Industry;

// Printing parent Account information


System.debug('Account ID: ' + accountId);
System.debug('Account Name: ' + accountName);
System.debug('Account Industry: ' + accountIndustry);

Explanation:

1. Child Contact ID: We define the ID of the child Contact record for which we want to
fetch the related parent Account record. Replace 'Insert_Contact_ID_Here' with the

actual ID of the child Contact .

2. SOQL Query: We use a SOQL query to retrieve the child Contact record along with the
related parent Account information ( SELECT Id, Name, Email, AccountId,

Account.Name, Account.Industry FROM Contact WHERE Id = :childContactId ).

We use dot notation ( . ) to traverse the relationship and access fields from the parent

Account object.
3. Accessing Parent Fields: After executing the query, we access fields of the parent

Account from the related Contact record using dot notation ( . ). For example,

childContact.Account.Name accesses the Name field of the parent Account .


4. Debugging: We print out information about the parent Account using System.debug()

statements for debugging purposes. Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 13/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

You can explore all the String methods in Apex, and learn those examples for each method.
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

Aggregate Functions in SOQL


Reviews functions
Aggregate Contact Us
in Salesforce are used to perform calculations on a set of records and
return a single result. Here’s an example of using aggregate functions in SOQL:

Suppose we have a custom object called Opportunity with fields Amount (representing the
amount of the opportunity) and StageName (representing the stage of the opportunity). We
want to calculate the total amount of all opportunities and the average amount of
opportunities in each stage.

// Querying aggregate data using SOQL


List<AggregateResult> results = [SELECT StageName, SUM(Amount) totalAmount, AVG(Amoun
FROM Opportunity
GROUP BY StageName];

// Iterating through the results


for (AggregateResult ar : results) {
// Accessing aggregated data
String stageName = (String)ar.get('StageName');
Decimal totalAmount = (Decimal)ar.get('totalAmount');
Decimal avgAmount = (Decimal)ar.get('avgAmount');

// Printing the aggregated data


System.debug('Stage: ' + stageName);
System.debug('Total Amount: ' + totalAmount);
System.debug('Average Amount: ' + avgAmount);
}

Explanation:

1. SOQL Query with Aggregate Functions: We use a SOQL query to perform aggregate
functions on the Opportunity object. We select the StageName field and calculate the

sum of Amount (totalAmount) and the average of Amount (avgAmount). We group the

results by the StageName field. Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 14/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

2. AggregateResult: The query returns a list of AggregateResult objects, each containing


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
the aggregated data for a specific stage.

3. Accessing Aggregated Data: We iterate through the AggregateResult objects using a


Reviews Contact Us
for loop and access the aggregated data using the get() method.

4. Printing: We print out the stage name, total amount, and average amount for each stage

using System.debug() statements.

Watch our FREE Salesforce online course video, it’s a full length free tutorial for beginners.

Binding Apex Variables in SOQL


Binding Apex variables, also known as binding variables or bind expressions, are used to
dynamically pass values into SOQL queries, SOSL searches, and dynamic SOQL queries in
Salesforce. They help prevent SOQL injection and improve performance. Here are examples
of how to use binding variables in various contexts:

Static SOQL Query with Binding Variable:

String searchKey = 'Test'; // Value to search for


List<Contact> contacts = [SELECT Id, Name, Email FROM Contact WHERE LastName = :searc

In this example, searchKey is a binding variable. It is used in the SOQL query to dynamically
filter contacts by the last name specified in the searchKey variable.

String searchKey = 'Test'; // Value to search for


List<Contact> contacts = [SELECT Id, Name, Email FROM Contact WHERE LastName = :searc

Dynamic SOQL Query with Binding Variable:

Whatsapp Chat
String objectType = 'Contact'; // Object type to query
String fieldName = 'LastName'; // Field name to filter

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 15/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

String searchKey = 'Test'; // Value to search for


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
String soqlQuery = 'SELECT Id, Name, Email FROM ' + objectType + ' WHERE ' + fieldNam
List<SObject> records = Database.query(soqlQuery);

Reviews Contact Us

In this example, we construct a dynamic SOQL query using variables objectType ,


fieldName , and searchKey . The searchKey variable is bound to the query using the :
syntax.

Read more: Workflow rules in Salesforce

SOSL Search with Binding Variable:

String searchKey = 'Test'; // Value to search for


List<List<SObject>> searchResults = [FIND :searchKey IN ALL FIELDS RETURNING Contact(

Here, searchKey is bound to the SOSL search query using the :searchKey syntax. This
searches for the specified keyword in all fields of the Contact object.

DML Statements with Binding Variables:

Account accToUpdate = new Account(Name = 'Example Account');


update accToUpdate;

In DML statements like update , insert , delete , and upsert , binding variables are used
implicitly. In this example, accToUpdate is bound to the update operation, and its changes
are persisted to the database.

Binding variables help make queries and DML operations dynamic, secure, and efficient by
allowing values to be passed dynamically into queries and DML statements, thus preventing
SOQL injection attacks and improving performance.
Whatsapp Chat
How to start with SOQL?

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 16/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

To work on SOQL you must have records in the database. So, before starting working on
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
Soql follow the below steps to insert some records via apex.

Step 1: Open the developer console and click on the Debug tab to open the anonymous
Reviews Contact Us
window as shown below the image.

Read more: Latest Salesforce interview questions and answers.

Step 2: In the image below, we have created an Account and associated contact and opportunity with it via apex.

Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 17/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Using the Query Editor, we can now write and execute a SOQL query to fetch the above-
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
inserted records. A SOQL query searches for data in a specific object and optionally, you
may add a condition to the WHERE clause to filter your search.
Reviews Contact Us
Read more: Validation Rules in Salesforce

In the image below we have queried the Account and its associated contact and opportunity
records and filtered the result by Account Name.

Key Features:

1. SOQL allows you to query records from Standard and Custom objects in one go.

2. SOQL allows querying on a single object or multiple objects that are related to one

another.
3. SOQL supports aggregate functions just like SQL. We can roll up and summarize data

with aggregate functions. For example, Avg, Min, Max, etc.

4. SOQl allows binding apex variables in the query to filter the records.
5. SOQl supports Parent to Child and Child to Parent queries.

Watch our FREE Salesforce online course video, it’s a full length free tutorial for beginners.

Whatsapp Chat
Frequently Asked Questions
What are the differences between SOQL, SOSL, and SQL?
https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 18/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

SOSL, or Salesforce Object Search Language, is like a powerful tool I use to find stuff in
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
Salesforce. Imagine I’m searching for a specific word in a big library full of books. SOSL
helps me do just that. It’s like a magic spell that lets me search across multiple books, not
just one, to find
Reviews whatUsI need. So, instead of looking through each book one by one, SOSL
Contact
quickly sifts through all the books and shows me the ones that mention the word I’m looking
for. It’s super handy when I need to find information fast and don’t want to spend all day
searching.

SOQL and SOSL are like cousins to SQL, but not identical twins. They speak a similar
language, but they have their own quirks tailored specifically for Salesforce. Imagine SQL as
the language you use to talk to a big library full of books, while SOQL and SOSL are the
languages you use to talk to a specialized library, like a library of comic books or recipe
books. They understand each other to some extent, but they also have their own unique
words and phrases that make them different.

So, while you might recognize some similarities between them, they’re not exactly the same,
just like cousins who share a family resemblance but have their own distinct personalities.
SOQL and SOSL are designed for querying data within the Salesforce platform, each serving
a specific purpose: SOQL for querying records from Salesforce objects and SOSL for
performing full-text searches across multiple objects.

Checkout: Variables in Salesforce Apex

Examples:

SOQL Query:

SELECT Id, Name, Account.Name FROM Contact WHERE Account.Name = 'ACME'

This SOQL query retrieves the Id, Name, and the related Account’s Name of all contacts
where the related Account’s Name is ‘ACME’.

Whatsapp Chat
SOSL Query:

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 19/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

FIND {ACME} IN ALL FIELDS RETURNING Contact(Id, Name), Account(Name)


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

This SOSL query searches for the keyword ‘ACME’ across all fields of the Contact and
Reviews Contact Us
Account objects and returns matching Contact records with their Id and Name, as well as
matching Account records with their Name.

SQL Query:

SELECT id, first_name, last_name FROM employees WHERE department = 'Sales'

This SOSL query searches for the keyword ‘ACME’ across all fields of the Contact and
Account objects and returns matching Contact records with their Id and Name, as well as
matching Account records with their Name.

How to write a basic SOQL Query?


To write a basic SOQL (Salesforce Object Query Language) query, you can use the SELECT
statement followed by the fields you want to retrieve from a Salesforce object. Here’s a basic
example of a SOQL query:

const query = 'SELECT Id, Name, AccountNumber FROM Account';

In this example, the query retrieves the Id , Name , and AccountNumber fields from the
Account object in Salesforce.

Checkout: Data types in Salesforce Apex

You can execute this query using Salesforce’s JavaScript Remoting, Apex, or other
Salesforce API methods depending on your use case. For example, using JavaScript
Remoting, you would define a remote action in your Apex controller and call it from your
JavaScript code:
Whatsapp Chat

Apex Controller:

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 20/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

public with sharing class AccountController {


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
@RemoteAction
public static List<Account> getAccounts() {
return [SELECT Id, Name, AccountNumber FROM Account];
}
Reviews Contact Us
}

JavaScript

Visualforce.remoting.Manager.invokeAction(
'{!$RemoteAction.AccountController.getAccounts}',
function(result, event) {
if (event.status) {
// Process the result
console.log(result);
} else {
console.error(event.message);
}
}
);

This is a basic example, and SOQL queries can be more complex, including conditions (
WHERE clause), ordering ( ORDER BY ), and grouping ( GROUP BY ).

To write a basic SOQL (Salesforce Object Query Language) query, you first specify the fields
you want to retrieve using the SELECT clause. For instance, let’s say we want to retrieve the
“Name” and “Industry” fields from the “Account” object. We would write the SELECT clause
like this: “SELECT Name, Industry”. This tells Salesforce to return the “Name” and “Industry”
fields in the query results.

Next, we specify the object from which we want to retrieve the data using the FROM clause.
In this example, we want to retrieve data from the “Account” object, so we write “FROM
Account”. This indicates that we want to query data from the “Account” object specifically.

Putting it all together, our basic SOQL query looks like this: “SELECT Name, Industry FROM
Account”. This query tells Salesforce to retrieve the “Name” and “Industry” fields fromChat
Whatsapp the
“Account” object. It’s a simple yet powerful way to extract specific information from

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 21/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Salesforce objects, and it forms the foundation for more complex queries involving additional
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
clauses like WHERE, ORDER BY, GROUP BY, and others.

How to find
Reviews
Object and Field API Names for your Queries?
Contact Us

To find Object and Field API Names for your queries in Salesforce, you can utilize several
methods. One common approach is to navigate to the Object Manager within the Salesforce
Setup menu. From there, you can search for the specific object you’re interested in, such as
“Account” or “Contact.” Once you locate the object, click on it to access its details. Here,
you’ll find a list of all the fields associated with that object, along with their respective API
Names. These API Names serve as unique identifiers for each field and are crucial for
referencing them accurately in your SOQL queries.

Read more: Salesforce apex programming examples

By leveraging these methods, you can efficiently discover Object and Field API Names
required for your SOQL queries in Salesforce. Whether you’re a Salesforce administrator,
developer, or consultant, understanding how to find and utilize Object and Field API Names
is essential for effectively querying and manipulating data within the Salesforce platform.

Using Developer Console:

Navigate to the Developer Console by clicking on your profile picture and selecting
“Developer Console”.

Open the “Execute Anonymous Window” by clicking on “Debug” > “Open Execute

Anonymous Window”.
Enter the following Apex code to describe the Account object and its fields:

Schema.DescribeSObjectResult accountDescribe = Account.sObjectType.getDescribe();


Map<String, Schema.SObjectField> fieldsMap = accountDescribe.fields.getMap();
for(String fieldName : fieldsMap.keySet()) {
System.debug('Field Label: ' + fieldsMap.get(fieldName).getDescribe().getLabel())
System.debug('API Name: ' + fieldsMap.get(fieldName).getDescribe().getName());
Whatsapp Chat
}

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 22/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Click on “Execute” to run the code. The Developer Console will display the Field Label and
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
API Name for each field of the Account object.

To find the Object and Field API Names for your queries in Salesforce, you can use the
Reviews Contact Us
Schema class in Apex. Here’s a code snippet that demonstrates how to retrieve the API
Names of an object and its fields:

// Specify the object API name for which you want to retrieve the schema
String objectApiName = 'Account';

// Get the schema describe result for the object


Schema.DescribeSObjectResult describeResult = Schema.getGlobalDescribe().get(objectAp

// Retrieve the object API name


String objectName = describeResult.getName();
System.debug('Object API Name: ' + objectName);

// Retrieve the field API names


List<String> fieldApiNames = new List<String>();
for (Schema.SObjectField field : describeResult.fields.getMap().values()) {
fieldApiNames.add(field.getDescribe().getName());
}
System.debug('Field API Names: ' + fieldApiNames);

This code snippet demonstrates how to retrieve the API Name of an object ( Account in this
case) and its fields. You can modify the objectApiName variable to specify the object for
which you want to retrieve the schema.

Read more: Methods – Salesforce Apex

How to use SOQL in Apex?


In Apex, SOQL (Salesforce Object Query Language) is employed to retrieve records from
Salesforce objects. SOQL queries in Apex are expressed as strings and can be executed
using various methods provided by the Salesforce platform. One common approach is to
write a static SOQL query directly within your Apex code. For example, you can use a static
Whatsapp Chat
query to fetch a list of Account records where the Industry field is set to ‘Technology’. This

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 23/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

involves writing the query directly within square brackets and assigning the result to a list
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
variable, as shown:

List<Account>
Reviews accounts
Contact Us = [SELECT Id, Name FROM Account WHERE Industry = 'Technology']

In addition to static queries, you can construct SOQL queries dynamically at runtime using
string concatenation or by leveraging the Database.query() method. This approach allows
you to build queries based on dynamic criteria. For instance, you might define query
conditions based on user input or runtime variables. Dynamic queries enable greater
flexibility in querying data from Salesforce objects within your Apex code. Here’s an example
of constructing a dynamic SOQL query:

Read more: Array methods in Salesforce Apex

String industry = 'Technology';


String soqlQuery = 'SELECT Id, Name FROM Account WHERE Industry = \'' + industry + '\
List<Account> accounts = Database.query(soqlQuery);

Furthermore, SOQL supports the use of binding variables, which allow you to dynamically
pass values into the query at runtime. Binding variables are denoted by a colon followed by
the variable name. This helps prevent SOQL injection and enhances query security. Here’s
how you can use binding variables in a SOQL query:

String industry = 'Technology';


List<Account> accounts = [SELECT Id, Name FROM Account WHERE Industry = :industry];

Moreover, SOQL allows you to query fields on related objects using relationship fields. For
example, you can query fields on child objects using parent-child relationship fields. Once
you have executed a SOQL query, you can iterate through the query results using standard
Apex iteration methods like for loops. This enables you to process and manipulate theChat
Whatsapp
retrieved data as needed within your Apex code. By leveraging SOQL in Apex, you can

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 24/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

effectively interact with Salesforce data and build robust applications on the Salesforce
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
platform.

Read more: Classes – Salesforce Apex


Reviews Contact Us

Difference between SOQL and SOSL


SOQL (Salesforce Object Query Language) SOSL (Salesforce Object Search Language)

Used for querying data from specific objects Used for performing text searches in records across
and their related objects. multiple objects.

Allows querying of individual records similar to Allows searching of fields with a search expression
SQL SELECT statements. using keywords.

Returns records that meet specific criteria Returns records containing the search term, potentially
defined in the WHERE clause. from multiple object types simultaneously.

Query targets a specific object or a specific set Searches the global index of all records that meet the
of objects defined in the FROM clause. search criteria across multiple objects.

Supports nested queries and relationship Limited to simple search conditions; does not allow
queries. nested queries or relationship queries.

Ideal for precise, complex queries where you Ideal for broad, text-based searches where the exact
know the structure of the database. location of data is unknown.

Can include COUNT, SUM, MAX, MIN, and Primarily focuses on finding text in record fields
other functions. without aggregate functions.

Has a row limit based on context, usually Has a different limit, typically 2,000 records for global
50,000 records in batch Apex. search across objects.

For those looking for Salesforce learning, CRS Info Solutions provides an extensive
Salesforce training program designed to enhance your skills and career opportunities.
Explore our Salesforce training in India to gain practical, hands-on experience. Our
training covers all essential aspects of Salesforce, ensuring comprehensive learning. With
expert instructors and a detailed curriculum, CRS Info Solutions is committed to your
success in the Salesforce ecosystem with our Career Building program. Whether you are a
beginner or looking to advance your skills, they offer the guidance and resources you
Whatsapp Chat
need. Enroll for free demo today!

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 25/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Banking & Finance SOQL Examples


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
Example 1: Retrieving Customer Account Details

This exampleContact
Reviews demonstrates
Us how to retrieve account details for a specific customer using
their account ID.

public class CustomerService {


public Account getAccountDetails(Id accountId) {
Account account = [SELECT Id, Name, BillingAddress, Phone, Industry, AnnualRe
FROM Account
WHERE Id = :accountId];
return account;
}
}

This code defines a method getAccountDetails within the CustomerService class. The
method takes an account ID as a parameter and retrieves the corresponding account’s
details such as ID, name, billing address, phone, industry, and annual revenue using an
SOQL query.

Read more: Loops in Salesforce Apex

Example 2: Fetching Transactions for a Specific Account

This example fetches all transactions associated with a specific account within a date range.

public class TransactionService {


public List<Transaction__c> getTransactions(Id accountId, Date startDate, Date en
List<Transaction__c> transactions = [SELECT Id, Amount__c, Date__c, Type__c,
FROM Transaction__c
WHERE Account__c = :accountId
AND Date__c >= :startDate
AND Date__c <= :endDate
ORDER BY Date__c DESC];
return transactions;
}
} Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 26/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

This code defines a method getTransactions within the TransactionService class. It


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
takes an account ID, start date, and end date as parameters and retrieves all transactions
related to that account within the specified date range. The transactions are ordered by date
inReviews
descending order.Us
Contact

Read more: Objects – Salesforce Apex

Example 3: Fetching High-Value Customers

This example identifies high-value customers based on their total assets managed by the
bank.

public class CustomerAnalysisService {


public List<Account> getHighValueCustomers(Decimal minAssets) {
List<Account> highValueCustomers = [SELECT Id, Name, AnnualRevenue, NumberOfE
FROM Account
WHERE AnnualRevenue > :minAssets
ORDER BY AnnualRevenue DESC];
return highValueCustomers;
}
}

This code defines a method getHighValueCustomers within the


CustomerAnalysisService class. The method takes a minimum asset value as a
parameter and retrieves a list of accounts with annual revenue greater than the specified
minimum. The accounts are ordered by annual revenue in descending order.

Collection is one of the important concept, checkout: Collections in Salesforce Apex

Example 4: Fetching Loan Applications with Pending Status

This example retrieves all loan applications that are pending approval.

public class LoanService {


public List<Loan_Application__c> getPendingLoanApplications() {
Whatsapp Chat
List<Loan_Application__c> pendingLoans = [SELECT Id, Applicant_Name__c, Loan_
FROM Loan_Application__c
WHERE Status__c = 'Pending'

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 27/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

ORDER BY Application_Date__c DESC];


Home returnUspendingLoans;
About Courses Registration Interview Questions Free Salesforce Tutorials
}
}

Reviews Contact Us

This code defines a method getPendingLoanApplications within the LoanService class.


The method retrieves all loan applications with a status of “Pending” and orders them by the
application date in descending order. The fields retrieved include ID, applicant name, loan
amount, application date, and status.

Checkout: Interfaces – Salesforce Apex

Healthcare SOQL Examples


Example 1: Retrieving Patient Medical Records

This example demonstrates how to retrieve medical records for a specific patient using their
patient ID.

public class MedicalRecordService {


public List<Medical_Record__c> getPatientMedicalRecords(Id patientId) {
List<Medical_Record__c> records = [SELECT Id, Patient__c, Diagnosis__c, Treat
FROM Medical_Record__c
WHERE Patient__c = :patientId
ORDER BY Record_Date__c DESC];
return records;
}
}

This code defines a method getPatientMedicalRecords within the


MedicalRecordService class. The method takes a patient ID as a parameter and retrieves
all medical records associated with that patient, ordered by the record date in descending
order. The fields retrieved include ID, patient reference, diagnosis, treatment, and record
date.
Whatsapp Chat

Example 2: Fetching Appointments for a Specific Doctor

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 28/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

This example fetches all appointments scheduled for a specific doctor within a specified date
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
range.

public class
Reviews AppointmentService
Contact Us {
public List<Appointment__c> getDoctorAppointments(Id doctorId, Date startDate, Da
List<Appointment__c> appointments = [SELECT Id, Doctor__c, Patient__c, Appoin
FROM Appointment__c
WHERE Doctor__c = :doctorId
AND Appointment_Date__c >= :startDate
AND Appointment_Date__c <= :endDate
ORDER BY Appointment_Date__c ASC];
return appointments;
}
}

This code defines a method getDoctorAppointments within the AppointmentService


class. The method takes a doctor ID, start date, and end date as parameters and retrieves all
appointments for that doctor within the specified date range. The appointments are ordered
by appointment date in ascending order. The fields retrieved include ID, doctor reference,
patient reference, appointment date, status, and description.

Readmore: Decision Making in Salesforce Apex

Airlines SOQL Examples


Example 1: Retrieving Flight Details for a Specific Flight Number

This example demonstrates how to retrieve details for a specific flight using its flight number.

public class FlightService {


public Flight__c getFlightDetails(String flightNumber) {
Flight__c flight = [SELECT Id, Flight_Number__c, Departure_City__c, Arrival_C
FROM Flight__c
WHERE Flight_Number__c = :flightNumber];
return flight;
}
}
Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 29/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

This code defines a method getFlightDetails within the FlightService class. The
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
method takes a flight number as a parameter and retrieves the corresponding flight’s details
such as ID, flight number, departure city, arrival city, departure time, arrival time, and status
using an SOQL
Reviews query.
Contact Us

Example 2: Fetching Reservations for a Specific Passenger

This example fetches all reservations made by a specific passenger using their passenger
ID.

public class ReservationService {


public List<Reservation__c> getPassengerReservations(Id passengerId) {
List<Reservation__c> reservations = [SELECT Id, Passenger__c, Flight__c, Rese
FROM Reservation__c
WHERE Passenger__c = :passengerId
ORDER BY Reservation_Date__c DESC];
return reservations;
}
}

This code defines a method getPassengerReservations within the ReservationService


class. The method takes a passenger ID as a parameter and retrieves all reservations
associated with that passenger. The reservations are ordered by reservation date in
descending order. The fields retrieved include ID, passenger reference, flight reference,
reservation date, seat number, and status.

Read more: Constants in Salesforce Apex

Logistics SOQL Examples


Example 1: Retrieving Shipment Details for a Specific Shipment ID

This example demonstrates how to retrieve details for a specific shipment using its shipment
ID.
Whatsapp Chat
public class ShipmentService {
public Shipment__c getShipmentDetails(Id shipmentId) {

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 30/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Shipment__c shipment = [SELECT Id, Shipment_Number__c, Origin__c, Destination


Home About Us Courses FROM Shipment__c
Registration Interview Questions Free Salesforce Tutorials
WHERE Id = :shipmentId];
return shipment;
}
Reviews
} Contact Us

This code defines a method getShipmentDetails within the ShipmentService class. The
method takes a shipment ID as a parameter and retrieves the corresponding shipment’s
details such as ID, shipment number, origin, destination, departure date, arrival date, and
status using an SOQL query.

Example 2: Fetching Deliveries for a Specific Driver

This example fetches all deliveries assigned to a specific driver within a specified date range.

public class DeliveryService {


public List<Delivery__c> getDriverDeliveries(Id driverId, Date startDate, Date en
List<Delivery__c> deliveries = [SELECT Id, Driver__c, Shipment__c, Delivery_D
FROM Delivery__c
WHERE Driver__c = :driverId
AND Delivery_Date__c >= :startDate
AND Delivery_Date__c <= :endDate
ORDER BY Delivery_Date__c ASC];
return deliveries;
}
}

This code defines a method getDriverDeliveries within the DeliveryService class. The
method takes a driver ID, start date, and end date as parameters and retrieves all deliveries
assigned to that driver within the specified date range. The deliveries are ordered by delivery
date in ascending order. The fields retrieved include ID, driver reference, shipment reference,
delivery date, status, and destination.

Read more: What is Apex?


Whatsapp Chat

Education SOQL Examples


https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 31/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Example 1: Retrieving Student Enrollment Details


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
This example demonstrates how to retrieve enrollment details for a specific student using
their student ID.
Reviews Contact Us

public class EnrollmentService {


public List<Enrollment__c> getStudentEnrollments(Id studentId) {
List<Enrollment__c> enrollments = [SELECT Id, Student__c, Course__c, Enrollme
FROM Enrollment__c
WHERE Student__c = :studentId
ORDER BY Enrollment_Date__c DESC];
return enrollments;
}
}

This code defines a method getStudentEnrollments within the EnrollmentService class.


The method takes a student ID as a parameter and retrieves all enrollment records
associated with that student. The enrollments are ordered by enrollment date in descending
order. The fields retrieved include ID, student reference, course reference, enrollment date,
and status.

Example 2: Fetching Courses Offered by a Specific Department

This example fetches all courses offered by a specific department using the department ID.

public class CourseService {


public List<Course__c> getDepartmentCourses(Id departmentId) {
List<Course__c> courses = [SELECT Id, Name, Department__c, Credits__c, Course
FROM Course__c
WHERE Department__c = :departmentId
ORDER BY Name ASC];
return courses;
}
}

Whatsapp
This code defines a method getDepartmentCourses within the CourseService Chat
class. The
method takes a department ID as a parameter and retrieves all courses offered by that

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 32/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

department. The courses are ordered by name in ascending order. The fields retrieved
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
include ID, name, department reference, credits, and course code.

Frequently
Reviews
Asked Questions (FAQs)
Contact Us

What tool to run SOQL query in Salesforce?

To run SOQL queries in Salesforce, you can use several tools, including the Salesforce
Developer Console, Workbench, and the Query Editor in Salesforce Setup. The Developer
Console is a robust tool that provides a user-friendly interface for writing and executing
SOQL queries. Workbench is another powerful web-based tool that allows you to run SOQL
queries and interact with Salesforce data. Additionally, the Query Editor, accessible through
the Salesforce Setup, offers a simple interface for executing SOQL queries directly within
your Salesforce org.

Read: Latest important Salesforce interview questions and answers.

What is the full form of SOQL?

The full form of SOQL is Salesforce Object Query Language. It is a query language provided
by Salesforce to retrieve data from the Salesforce database. SOQL is similar to SQL
(Structured Query Language) but is specifically designed to work with Salesforce objects and
fields.

Which three data types can a SOQL query return?

A SOQL query can return three primary data types:

1. List<sObject>: A list of standard or custom objects, where each item in the list is a

record that matches the query criteria.


2. List<AggregateResult>: A list of aggregate result objects, typically used when
performing aggregate queries such as COUNT, SUM, AVG, MIN, and MAX.

3. Integer: An integer value, usually returned when using aggregate functions like COUNT
Whatsapp Chat
to determine the number of records that match the query criteria.

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 33/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

What is the maximum length of a SOQL query?


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
The maximum length of a SOQL query is 20,000 characters. This limit includes the query
string and any variable bindings used in the query. It is important to be mindful of this limit
Reviews Contact Us
when constructing complex queries to ensure they do not exceed the maximum allowed
length.

Read more: Methods – Salesforce Apex

How many records we can query in SOQL?

In a single SOQL query, you can retrieve up to 50,000 records. This limit applies to the total
number of records returned by the query. If you need to process more records, you may
need to use pagination techniques or batch Apex to handle larger datasets efficiently.

How do I get a single record in SOQL?

To get a single record in SOQL, you can use the LIMIT clause to restrict the query result to
one record. For example:

Account singleAccount = [SELECT Id, Name FROM Account LIMIT 1];

This query retrieves the first account record from the Account object. It’s important to note
that if you expect only one record, you can directly assign the result to a single sObject
variable.

How do I fetch all records in SOQL?

To fetch all records in SOQL, you write a query without any filtering criteria. However, it’s
important to be mindful of Salesforce’s governor limits. Here’s an example:

List<Account> allAccounts = [SELECT Id, Name FROM Account];

This query retrieves all account records. If the number of records exceeds the governor
limits, you might need to use batch processing or pagination to handle the data efficiently.

Whatsapp Chat
Read more: Classes – Salesforce Apex

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 34/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

What are the different types of SOQL queries?


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
The different types of SOQL queries include:

Reviews
1. Contact Us
Basic Queries: Simple queries that retrieve data from a single object.
SELECT Id, Name FROM Account;

2. Relationship Queries: Queries that retrieve data from related objects using child-to-
parent or parent-to-child relationships.

// Child-to-parent SELECT Name,


Account.Name FROM Contact;
// Parent-to-child

SELECT Name, (SELECT LastName FROM Contacts) FROM Account;


3. Aggregate Queries: Queries that perform aggregate functions such as COUNT, SUM,
AVG, MIN, and MAX.

SELECT COUNT(Id) FROM Account;

How many levels we can query in SOQL?

In SOQL, you can query up to five levels of parent-child relationships in a single query.
However, there are some limitations on the number of parent-to-child subqueries you can
include. The query depth limit in Salesforce ensures that complex queries remain performant
and within governor limits.

How do I resolve too many SOQL queries?

To resolve the “too many SOQL queries” error, you can:

1. Optimize Queries: Ensure your queries are efficient and retrieve only necessary fields
and records.
2. Reduce Loop Queries: Avoid placing SOQL queries inside loops. Instead, use bulk

queries outside of loops. Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 35/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

3. Use Collections: Retrieve records in bulk and use collections (lists, sets, maps) to
Home About Us Courses Registration Interview Questions Free Salesforce Tutorials
process the data.
4. Use Batch Apex: For large data operations, consider using Batch Apex to process
Reviews Contact Us
records in manageable chunks.

5. Leverage Caching: Cache results when appropriate to avoid repetitive queries.

How to retrieve more than 50,000 records in Salesforce SOQL?

To retrieve more than 50,000 records in Salesforce SOQL, you can use one of the following
approaches:

Batch Apex: Use Batch Apex to process records in batches of up to 200 records per batch,
allowing you to handle large data sets efficiently.

public class MyBatchClass implements Database.Batchable<sObject> {


public Database.QueryLocator start(Database.BatchableContext bc) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
public void execute(Database.BatchableContext bc, List<Account> scope) {
// Process each batch of records
}
public void finish(Database.BatchableContext bc) {
// Finalize batch processing
}
}

Query Pagination: Use query pagination to retrieve records in smaller chunks. This involves
using the OFFSET clause or maintaining a cursor to fetch subsequent sets of records.

List<Account> accounts = [SELECT Id, Name FROM Account LIMIT 200 OFFSET 0];
// Repeat with different offsets to retrieve subsequent records

Next chapter is Security and previous chapter is SOSL Query.


← How to pass parameters to Scheduled Apex class? Mastering Single Sign-On in Salesforce →
Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 36/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Comments are closed.


Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

Reviews Contact Us Apex Tutorials

Overview - Salesforce Apex

Environment - Salesforce Apex

Examples - Salesforce Apex

Data Types - Salesforce Apex

Variables - Salesforce Apex

Strings - Salesforce Apex

Arrays - Salesforce Apex

Constants - Salesforce Apex

Decision Making - Salesforce Apex

Loops - Salesforce Apex

Collections - Salesforce Apex

Map Class - Salesforce Apex

Classes - Salesforce Apex

Methods - Salesforce Apex

Objects - Salesforce Apex

Interfaces - Salesforce Apex

DML - Salesforce Apex

Database methods - Salesforce Apex

SOSL Query - Salesforce Apex

SOQL Query - Salesforce Apex

Security - Salesforce Apex

Invoking - Salesforce Apex Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 37/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Home About Us Courses Registration Interview Questions Free Salesforce Tutorials

Reviews Contact Us

REGISTER FOR DEMO

Name *

Name

Email address *

Email address

Phone *

Phone

Select Course
Select Course/Service

Country (for suitable batch-timing) *

Select Country/Location

Type the characters *

Whatsapp Chat

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 38/39
11/7/24, 11:38 AM SOQL Query in Salesforce Apex & Examples

Home About Us Courses Registration


S Interview
E ND QQuestions
UE RY Free Salesforce Tutorials

RECENT POSTS
Reviews Full Stack developer Interview Questions
Contact Us

Microsoft Python Interview Questions

Salesforce Interview Questions

React JS Interview Questions for 5 years Experience

High Paying Salesforce Jobs & Salaries 2025

Salesforce Admin Interview Questions

Kasmo Marketing Cloud Interview Questions

BMW Salesforce Interview Questions

Salesforce Apex Interview Questions

Basic Artificial Intelligence interview questions and answers

Latest Articles Other Links Useful Links

Why You Should Get Salesforce CertifiedEasy Salesforce Admin TutorialHome

Salesforce Admin Certification Guide Apex Tutorial Chapter 1 About us

Why CRS Info Solutions? Bengaluru Student Registration

What is Cloud Computing? Hyderabad Faculty Registration

What is Salesforce? Pune Contact us

Recent Posts

Full Stack developer Interview Questions

Microsoft Python Interview Questions

Salesforce Interview Questions

Copyright © 2024 CRS Info Solutions. All Rights Reserved.

Whatsapp Chat
Terms of Use Privacy Policy Disclaimer Contact Us

https://www.crsinfosolutions.com/salesforce-apex-tutorial-chapter-19-apex-soql-query/ 39/39

You might also like