title: How to nest a hash dataset when joining tables
body: <p>I have a <code>left outer join</code> query and I would like to nest the result when I execute the query from the <code>.all</code> method. At the moment I am only able to return the result in a flat hash but I would like a nested hash so the join table name is the next level in the hash. Is this even possible within Sequel?</p>
  
  <p>I have <code>product</code> and <code>meta</code> tables and the Sequel command is via graph so the columns are aliased, and look like this:</p>
  
  <pre><code>db[:product].graph(:meta, {product_id: : product_id}, {join_type: :left_outer}).all
  </code></pre>
  
  <p>What's annoying with the graph command is it will only alias columns if it matches the main table. Is there a way of making sure it changes all the columns as you'll see that the <code>quantity</code> column hasn't got a prefix of <code>meta_</code>? </p>
  
  <p>If this is possible then I suppose I could modify the hash manually by moving the <code>key =&gt; values</code> into a separate hash that is nested by matching the prefix (meta_) of the keys. </p>
  
  <p>This is what is currently being returned but I would like the nested hash instead:</p>
  
  <p>Currently:</p>
  
  <pre><code>{
    id: 1,
    name: 'Shave',
    product_id: 123,
    meta_id: 1,
    meta_product_id: 123,
    quantity: 2
  }
  </code></pre>
  
  <p>What I'd like to see:</p>
  
  <pre><code>{
    id: 1,
    name: 'Shave',
    product_id: 123,
    meta: {
      id: 1,
      product_id: 123,
      quantity: 2
    }
  }
  </code></pre>