List<Opportunity_Payment__c> opp = [SELECT Id,(SELECT Owner.Id FROM Opportunity__r) FROM Opportunity_Payment__c];
  • Opportunity_Payment__c has master-detail relationship field to the opportunity.

**ERROR: **Didn't understand relationship 'Opportunity__r' in FROM part of query call. If you are attempting to use a custom relationship, be sure to append the '__r' after the custom relationship name. Please reference your WSDL or the describe call for the appropriate names.

  • List<Opportunity_Payment__c>*** Sep 19, 2016 at 15:21

1 Answer 1


If Opportunity_Payment__c has a master-detail relationship field(let's call it oppParent) to Opportunity object, it means that you'll have just 1 parent per Opportunity_Payment__c, hence your query should be a children to parent query (Right Outer Join):

List<Opportunity_Payment__c> opp = [SELECT Id, oppParent__r.Owner.Id
                                    FROM Opportunity_Payment__c];

What you're using in your query is a parent to child relationship query (Left Outer Join), which would be ok if you run it for opportunity sobject:

List<Opportunity> opp = [SELECT Id, (SELECT Id FROM Opportunity_Payments__r)
                                    FROM Opportunity];

More info

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.