Graphing fixes this situation by returning rows as a hash with table name symbol keys, and subhash values, where the subhashes have the columns and values for the related table.
It does these by aliasing all columns for you, and splitting the single hash of results into subhashes when rows are retrieved, before returning them.
See here how you get the attendees columns in the attendees subhash, and the events columns in the events subhash.
Graphing makes it much easier to deal with database relationships at a row based level.