title: Using IS NULL or IS NOT NULL on join conditions - Theory question
body: <p>Theory question here:</p>
  
  <p>Why does specifying table.field IS NULL or table.field IS NOT NULL not work on a join condition (left or right join for instance) but only in the where condition?</p>
  
  <p>Non working Example:</p>
  
  <p>-this should return all shipments with any returns (non null values) filtered out. However, this returns all shipments regardless if anything meets the [r.id is null] statement.</p>
  
  <pre><code>SELECT
    *
  FROM 
    shipments s
  LEFT OUTER JOIN returns r  
    ON s.id = r.id
    AND r.id is null
  WHERE
    s.day &gt;= CURDATE() - INTERVAL 10 DAY 
  </code></pre>
  
  <p>Working example:</p>
  
  <p>-This returns the correct amount of rows which is total shipments, less any related to a returns (non null values).</p>
  
  <pre><code>SELECT
    *
  FROM 
    shipments s
  LEFT OUTER JOIN returns r  
    ON s.id = r.id
  WHERE
    s.day &gt;= CURDATE() - INTERVAL 10 DAY
    AND r.id is null
  </code></pre>
  
  <p>Why is this the case? All other filter conditions between two tables being joined work just fine, but for some reason IS NULL and IS NOT NULL filters do not work unless in the where statement.</p>
  
  <p>What is the reason for this?</p>