title: Cypher / Should I use the WITH clause to pass values to next MATCH?
body: <p>Using Neo4j 2.1.X, let's suppose this query, returning the user 123's friends that bought a Car:</p>
  
  <pre><code>MATCH (u1:User("123"))-[:KNOWS]-(friend)
  MATCH (friend)-[:BUYS]-&gt;(c:Car)
  RETURN friend
  </code></pre>
  
  <p>In this <a href="http://wes.skeweredrook.com/the-mythical-with-neo4js-cypher-query-language/" rel="noreferrer">article</a>, it is written regarding the <code>WITH</code> clause:</p>
  
  <blockquote>
    <p>So, how does it work? Well, with is basically just a stream, as lazy
    as it can be (as lazy as return can be), passing results on to the
    next query.</p>
  </blockquote>
  
  <p>So it seems I should transform the query like this:</p>
  
  <pre><code>MATCH (u1:User("123"))-[:KNOWS]-(friend)
  WITH friend
  MATCH (friend)-[:BUYS]-&gt;(c:Car)
  RETURN friend
  </code></pre>
  
  <p>Should I? Or does the current version of Cypher already handle <code>MATCH</code> chaining while passing values through them?</p>