title: Slick outer join with multiple tables
body: <p>Doing an outer join between two tables is easy:</p>
  
  <pre><code>tblA.leftJoin(tblB).on(_.aId === _.bId)
  </code></pre>
  
  <p>But when doing joins between 5 tables it quickly becomes unwieldy:</p>
  
  <pre><code>tblA.leftJoin(tblB).on(_.aId === _.bId).
      leftJoin(tblC).on(_._1.aId === _.cId).
      leftJoin(tblD).on(_._1._1.aId === _.dId).
      leftJoin(tblE).on(_._1._1._1.aId === _.eId)
  </code></pre>
  
  <p>The tuple accessors become a little confusing, especially if they do not all access the first table.</p>
  
  <p>Is there a better way?</p>
  
  <p>The fact that inner joins are semantically equivalent to flatMap with filter solves this problem for inner joins:</p>
  
  <pre><code>for {
      a &lt;- tblA
      b &lt;- tblB if a.aId === b.bId
      c &lt;- tblC if a.aId === c.cId
      d &lt;- tblD if a.aId === d.dId
      e &lt;- tblE if a.aId === e.eId
  } yield ???
  </code></pre>
  
  <p>Is there a similairly elegant syntax for outer joins?</p>