(Assuming that the (event_id, event_date) is the primary or a unique key in event_dates table):

SELECT
  m.member_id AS id,
  ed_start.event_id,
  ed_start.event_date AS miss_start,
  ed_end.event_date AS miss_end,
  COUNT(*) AS consecutive_misses
FROM
  members AS m
  JOIN
    event_dates AS ed_start
    ON
      ed_start.event_date &gt;= m.member_join_date
  JOIN
    event_dates AS ed_end
    ON  ed_end.event_id = ed_start.event_id
    AND ed_end.event_date &gt;= ed_start.event_date
  JOIN
    event_dates AS ed_mid
    ON  ed_mid.event_id = ed_start.event_id
    AND ed_mid.event_date &gt;= ed_start.event_date
    AND ed_mid.event_date &lt;= ed_end.event_date
  LEFT JOIN
    attendance AS a
    ON  a.member_id = m.member_id
    AND a.event_id = ed_mid.event_id
    AND a.attendance_date = ed_mid.event_date
GROUP BY 
    m.member_id,
    ed_start.event_id,
    ed_start.event_date,
    ed_end.event_date
HAVING
    COUNT(*) &gt;= 3
   AND
    COUNT(a.attendance_date) = 0 ;


Test in SQL-Fiddle



The above may give (too many) multiple results if the consecutive misses are more than 3. So, If you want only the members and events they missed but not when they missed attendance, replace the SELECT with (test: SQL-Fiddle-2): 

SELECT DISTINCT
  m.member_id AS id,
  ed.event_id,
FROM
  ...


You could also wrap the query (as a derived table) inside an external query and do another grouping for this to work (test: SQL-Fiddle-3)



And if you want only the members and not the events they missed nor when they missed attendance:

SELECT DISTINCT
  m.member_id AS id
FROM
  ...


Count consecutive null rows from a joined table
Whenever i try and close Skype on Windows, whether through the X on the top bar, or by right-clicking on the taskbar, it just minimizes it, instead of closing it.

How are you supposed to just quit??
