In the page http://developer.android.com/guide/topics/providers/calendar-provider.html, the fields of the tables are listed.
If you quickly go through the Events table, Reminders table, Attendees table and Instances table, you would see that the 3 later tables all have the EVENT_ID field, but there is not such field in the Event table.
And in the Instances table, there is not the field of event location, this field is listed in the Events table.
So the question is how to assign the location values in the Events in a Calendar to the instances.
If you read through the whole page carefully, you will see the hint.
In the paragraph below Figure 1, it is mentioned
"
CalendarContract.Events | This table holds the event-specific information. Each row in this table has the information for a single event—for example, event title, location, start time, end time, and so on. The event can occur one-time or can recur multiple times. Attendees, reminders, and extended properties are stored in separate tables. They each have an EVENT_ID that references the _ID in the Events table. |
Indeed there is an ID field in the Events table which is the same as those EVENT_ID fields in the other tables.
This _ID is inherited from the base class "BaseColumns", and can be used in the query string of the Events table.
Now we can use the value of this field, _ID, to match the EVENT_ID in the other tables and assign the field values in the Events table to the Events instances.