title: Compare start and end dates across multiple rows
body: <p>I have a table of subscriptions for contacts. A contact can have multiple subscriptions:</p>
  
  <pre><code>CREATE TABLE contact (
      id INTEGER NOT NULL,
      name TEXT,
      PRIMARY KEY (id)
  );
  
  CREATE TABLE subscription (
      id INTEGER NOT NULL,
      contact_id INTEGER NOT NULL REFERENCES contact(id),
      start_date DATE,
      end_date DATE,
      PRIMARY KEY (id)
  );
  </code></pre>
  
  <p>I need to get all subscriptions for a given by contact that do <strong>not</strong> have a subscription
  that starts on the same date as the end date of the another subscription for the same
  contact.</p>
  
  <p>So for the given data: </p>
  
  <pre><code>INSERT INTO contact (id, name) VALUES 
  (1, 'John'),
  (2, 'Frank');
  
  INSERT INTO subscription (id, contact_id, start_date, end_date) VALUES 
  (1, 1, '2012-01-01', '2013-01-01'),
  (2, 1, '2013-01-01', '2014-01-01'),
  (3, 2, '2012-01-01', '2012-09-01'),
  (4, 2, '2013-01-01', '2014-01-01');
  </code></pre>
  
  <p>I want to get subscriptions with ids of 2, 3, 4 but not 1, because the contact 'John'
  has a subscription with a <code>start_date</code> on the same day (<code>2013-01-01</code>) as the <code>end_date</code> 
  for subscription with <code>id</code> of 1.</p>
  
  <p>What is the best way to achieve this?</p>