Detecting resource scheduling conflicts with MySQL
Either like this:

SELECT DISTINCT 
'this events and participations overlap',
e.*
FROM events e 
JOIN event_participations ep ON e.id = ep.event
WHERE EXISTS (SELECT 1 
              FROM events e2
              JOIN event_participations ep2 ON e2.id = ep2.event 
              WHERE e.date = e2.date 
                AND e2.start_minute &lt; e.end_minute 
                AND e2.end_minute &gt; e.start_minute
                AND ep2.participant = ep.participant
             )


or like this:

SELECT DISTINCT 
'this events and participations overlap',
e.*
FROM events e 
JOIN event_participations ep ON e.id = ep.event
JOIN events e2 ON  e.date = e2.date 
               AND e2.start_minute &lt; e.end_minute 
               AND e2.end_minute &gt; e.start_minute
JOIN event_participations ep2 ON e2.id = ep2.event 
WHERE ep2.participant = ep.participant


The nice thing about EXISTS is, that it stops to search as soon as it hits. The JOIN approach builds the whole data set.