6

I want to join 2 tables in a SOQL query. I looked at QueryResult but think it might be a red herring. Difficult to tell from the documentation.

I have a lookup field between table CustomObj and Event. Assuming I have a relationship called Events can I do something like this?

List<CustomObj__c> objects = [Select Id, Name, (Select Id, DataField__c From Events) 
                              From CustomObj__c];

If this works how do I access the fields from the sub query? i.e. can I do this?

objects[0].DataField__c

What happens if the field name of the out query match the field names of the inner query?

Is it easier to forget the join altogether and do 2 queries?

1
  • I was confused about the direction of the relationship. Checking the schema in Eclipse Force plugin helped to clarify. Now I'm using a child to parent syntax. ONe other tip is to use the foreign key name when dealing with child to parent. That is not the same as the child relationship name.
    – wisemanIV
    Nov 9, 2013 at 7:43

1 Answer 1

11
for(CustomObj__c record: objects) {
    for(Event eventRecord: record.Events) {
        // each eventRecord has data
    }
}

You can access them individually as an array, too:

objects[0].Events[0].DataField__c

There will never be a conflict, because the child object will be in its own array.

4
  • Ok, makes sense. However when I run the SOQL in the developer console and copy paste the child relationship name from the object definition it reports 'didnt understand relationship'. I've tried with and without __r. Any ideas?
    – wisemanIV
    Nov 9, 2013 at 2:23
  • I'd need to see the query to figure out what's going on. Generally speaking, though if it's a custom relationship, it uses __r, if it's a standard object (such as Event), it won't use __r.
    – sfdcfox
    Nov 9, 2013 at 2:57
  • select Id, Name, (select Id, Title__c from MyNamespace__Rules__r) from MyNamespace__Rule__c there is a lookup field on object MyNamespace__Rule and in the field definition the child relationship is called Rules
    – wisemanIV
    Nov 9, 2013 at 4:38
  • So I think I need to do something like this but still cant get it to work in the dev console - select Id, Name, (select Id from MyNamespace__Rule__c.Rules__r) from MyNamespace__Rule__c
    – wisemanIV
    Nov 9, 2013 at 4:52

You must log in to answer this question.

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