For a given account I need a list of all contacts and contact roles. For example: if account a has three contacts and two of them have contact roles:

Contact.Name    AccountContactRole.Role
A               Purchaser
B               Influencer
C               null

Is this possible in one query or do I need to query all contacts and all contact roles separately?

2 Answers 2


See the blog for SOQL subquery

You can use a inner query to achive this.

Try this code:

List<Account> accountList = [Select Id, Name,(Select id from AccountContactRoles), (Select Id from Contacts)   from Account where Id=: 'some id'];


for(Account obj : accountList){

If I understand you correctly, this will do what you need.

SELECT Contact.name, Role FROM AccountContactRole WHERE Account.id = XXXX

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .