SELECT s.username, COUNT(DISTINCT i.invoice) invoices_due FROM ssm_demo_students s JOIN ssm_demo_users u ON u.username = s.username JOIN (SELECT MAX(IF(end_semester < NOW(), semester, null)) last_semester, MAX(IF(semester <= NOW(), semester, null)) this_semester, MIN(IF(semester > NOW(), semester, null)) next_semester FROM ssm_demo_semesters) t LEFT JOIN ssm_demo_registrations r ON r.username = s.username JOIN ssm_demo_classes c ON (c.class = r.class AND (c.semester = t.last_semester OR c.semester = t.this_semester OR c.semester = t.next_semester ) ) LEFT JOIN ssm_demo_invoice_recipients i ON i.username = s.username AND i.paid = 0 GROUP BY s.username ORDER BY u.last_name ASC LIMIT 0,20;