Skip to main content

SUBQUERY

For more details check Check SOQL API - SubQuery.

NOTE! 🚨 All examples use inline queries built with the SOQL Lib Query Builder. If you are using a selector, replace SOQL.of(...) with YourSelectorName.query().

SOQL

SELECT Id, Name, (
SELECT Id, Name FROM Contacts
) FROM Account

SOQL Lib

SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.Id, Contact.Name)
)
.toList();

Fields​

SOQL

SELECT Id, Name, (
SELECT Id, Name FROM Contacts
) FROM Account

SOQL Lib

SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.Id, Contact.Name)
)
.toList();

String Fields​

SOQL

SELECT Id, Name, (
SELECT Id, Name FROM Contacts
) FROM Account

SOQL Lib

SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name)
.with(SOQL.SubQuery.of('Contacts')
.with('Id, Name')
)
.toList();

Parent Fields​

SOQL

SELECT Id, Name, (
SELECT Id, Name, CreatedBy.Id, CreatedBy.Name
FROM Contacts
) FROM Account

SOQL Lib

SOQL.of(Account.SObjectType)
.with(Account.Id, Account.Name)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.Id, Contact.Name)
.with('CreatedBy', new List<SObjectField>{
User.Id, User.Name
})
)
.toList();

Nested SubQuery​

SOQL supports relationship queries that traverse up to five levels of parent-child records. Query Five Levels of Parent-to-Child Relationships in SOQL Queries.

SOQL

SELECT Id, Name, (
SELECT FirstName, LastName , (
SELECT Id, AssetLevel FROM Assets
) FROM Contacts
) FROM Account

SOQL Lib

SOQL_Account.query()
.with(Account.Id, Account.Name)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.FirstName, Contact.LastName)
.with(SOQL.SubQuery.of('Assets')
.with(Asset.Id, Asset.AssetLevel)
)
).toList();