title: Ecto: How to preload records with selecting another joined columns
body: <p>Are there any ways to preload records by selecting another joined columns?</p>
  
  <pre><code># table structure
  # User 1---* Post 1---* PostTag *---1 Tag
  
  # extract definition of scheme
  scheme "posts" do
   ...
   has_many :post_tags, PostTag
   has_many :tags, [:post_tags, :tag]
  end
  </code></pre>
  
  <p>Following pseudo-code expresses my goal(but not work).</p>
  
  <pre><code>query = from post in Post,
    join: user in User, on post.user_id == user.id,
    select: %{
      id: post.id,
      title: post.title,
      user_name: user.name, # &lt;= column at joined table
    },
    preload: [:tags]
  Repo.all(query)
  #=&gt; ** (Ecto.QueryError) the binding used in `from` must be selected in `select` when using `preload` in query:`
  </code></pre>
  
  <p>I expect the result like this.</p>
  
  <pre><code>[
    %{id: 1, title: "AAA", user_name: "John", tags: [%{name: "elixir"},...]},
    %{id: 2, title: "BBB", user_name: "Mike", tags: [%{name: "erlang"},...]},
    ...
  ]
  </code></pre>