SubQuery
Construct sub-query with provided API.
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.Id, Contact.Name, Contact.Phone)
)
.toList();
Methodsโ
The following are methods for SubQuery.
with(SObjectField field)with(SObjectField field1, SObjectField field2)with(SObjectField field1, SObjectField field2, SObjectField field3)with(SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4)with(SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4, SObjectField field5)with(List<SObjectField> fields)with(String relationshipName, SObjectField field)with(String relationshipName, SObjectField field1, SObjectField field2)with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3)with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4)with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4, SObjectField field5)with(String relationshipName, Iterable<SObjectField> fields)with(String fields)
orderBy(SObjectField field)orderBy(String field)orderBy(String relationshipName, SObjectField field)sortDesc()sort(String direction)nullsLast()
INITโ
ofโ
Constructs a SubQuery.
Signature
SubQuery of(String ofObject)
Example
SELECT Id, (
SELECT Id
FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts'))
.toList();
SELECTโ
with field1 - field5โ
Signature
SubQuery with(SObjectField field);
SubQuery with(SObjectField field1, SObjectField field2);
SubQuery with(SObjectField field1, SObjectField field2, SObjectField field3);
SubQuery with(SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4);
SubQuery with(SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4, SObjectField field5);
Example
SELECT Id, (
SELECT Id, Name
FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.Id, Contact.Name)
)
.toList();
with fieldsโ
Use for more than 5 fields.
Signature
SubQuery with(List<SObjectField> fields)
Example
SELECT Id, (
SELECT Id, Name, Phone, RecordTypeId, Title, Salutation
FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with(new List<SObjectField>{
Contact.Id,
Contact.Name,
Contact.Phone,
Contact.RecordTypeId,
Contact.Title,
Contact.Salutation
})
)
.toList();
with related field1 - field5โ
Allows to add parent field to a query.
Signature
Single Related Field Method
SubQuery with(String relationshipName, SObjectField field)
Two Related Fields Method
SubQuery with(String relationshipName, SObjectField field1, SObjectField field2);
Three Related Fields Method
SubQuery with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3);
Four Related Fields Method
SubQuery with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4);
Five Related Fields Method
SubQuery with(String relationshipName, SObjectField field1, SObjectField field2, SObjectField field3, SObjectField field4, SObjectField field5);
Example
SELECT Id, (
SELECT CreatedBy.Id, CreatedBy.Name
FROM Contacts
) FROM Account
SOQL Lib Related Fields
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with('CreatedBy', User.Id, User.Name)
)
.toList();
with related fieldsโ
Signature
SubQuery with(String relationshipName, Iterable<SObjectField> fields)
Example
SELECT Id, (
SELECT CreatedBy.Id, CreatedBy.Name
FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with('CreatedBy', new List<SObjectField>{
User.Id, User.Name
})
)
.toList();
with string fieldsโ
Signature
SubQuery with(String fields)
Example
SELECT Id, (
SELECT Id, Name, Phone, RecordTypeId, Title, Salutation
FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with('Id, Name, Phone, RecordTypeId, Title, Salutation')
)
.toList();
SUB-QUERYโ
with subqueryโ
Query Five Levels of Parent-to-Child Relationships in SOQL Queries
Use SOQL to query several relationship types.
Signature
SubQuery with(SOQL.SubQuery subQuery)
Example
SELECT Name, (
SELECT LastName , (
SELECT AssetLevel FROM Assets
) FROM Contacts
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.with(Contact.LastName)
.with(SOQL.SubQuery.of('Assets')
.with(Asset.AssetLevel)
)
).toList();
WHEREโ
whereAreโ
For more details check SOQL.FilterGroup and SOQL.Filter
Signature
SubQuery whereAre(FilterClause conditions)
Example
SELECT Id, (
SELECT Id
FROM Contacts
WHERE Id = :contactId OR Name = '%John%'
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.whereAre(SOQL.FilterGroup
.add(SOQL.Filter.with(Contact.Id).equal(contactId))
.add(SOQL.Filter.with(Contact.Name).contains('John'))
.conditionLogic('1 OR 2')
)
)
.toList();
ORDER BYโ
order byโ
Signature
SubQuery orderBy(SObjectField field)
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY Name
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy(Contact.Name)
)
.toList();
orderBy string fieldโ
Signature
SubQuery orderBy(String field)
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY Name
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy('Name')
)
.toList();
orderBy relatedโ
Order SOQL query by parent field.
Signature
SubQuery orderBy(String relationshipName, SObjectField field)
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY CreatedBy.Name
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy('CreatedBy', User.Name)
)
.toList();
sortDescโ
Default order is ascending (ASC).
Signature
SubQuery sortDesc()
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY Name DESC
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy(Contact.Name)
.sortDesc()
)
.toList();
sortโ
Signature
SubQuery sort(String direction)
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY Name DESC
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy('Name')
.sort('DESC')
)
.toList();
nullsLastโ
By default, null values are sorted first (NULLS FIRST).
Signature
SubQuery nullsLast()
Example
SELECT Id, (
SELECT Id
FROM Contacts
ORDER BY Name NULLS LAST
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.orderBy(Contact.Name)
.nullsLast()
)
.toList();
LIMITโ
setLimitโ
Signature
SubQuery setLimit(Integer amount)
Example
SELECT Id, (
SELECT Id
FROM Contacts
LIMIT 100
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.setLimit(100)
)
.toList();
OFFSETโ
offsetโ
Signature
SubQuery offset(Integer startingRow)
Example
SELECT Id, (
SELECT Id
FROM Contacts
OFFSET 10
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.offset(10)
)
.toList();
FORโ
forReferenceโ
Signature
SubQuery forReference()
Example
SELECT Id, (
SELECT Id
FROM Contacts
FOR REFERENCE
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.forReference()
)
.toList();
forViewโ
Signature
SubQuery forView()
Example
SELECT Id, (
SELECT Id
FROM Contacts
FOR VIEW
) FROM Account
SOQL.of(Account.SObjectType)
.with(SOQL.SubQuery.of('Contacts')
.forView()
)
.toList();