Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<pre><code>SELECT m1.meetingID, m1.meetingStart, m1.meetingEnd, m2.meetingID FROM t_meeting m1, t_meeting m2 WHERE (m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd OR m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd) AND m1.meetingID &lt;&gt; m2.meetingID </code></pre> <p>This will select each pair twice.</p> <p>If you want each pair to be selected just once, use:</p> <pre><code>SELECT m1.meetingID, m1.meetingStart, m1.meetingEnd, m2.meetingID FROM t_meeting m1, t_meeting m2 WHERE (m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd OR m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd) AND m2.meetingID &gt; m1.meetingID </code></pre> <p>Make sure you have indexes on <code>meetingStart</code> and <code>meetingEnd</code> for the query to work efficiently.</p> <p><code>MySQL</code>, however, will probably use <code>INDEX MERGE</code> to run this query, which is not very efficient in current implementation.</p> <p>You also may try to use:</p> <pre><code>SELECT m1.*, m2.* FROM ( SELECT m1.meetingID AS mid1, m2.meetingID AS mid2 FROM t_meeting m1, t_meeting m2 WHERE m2.meetingStart BETWEEN m1.meetingStart AND m1.meetingEnd AND m2.meetingID &lt;&gt; m1.meetingID UNION SELECT m1.meetingID, m2.meetingID FROM t_meeting m1, t_meeting m2 WHERE m2.meetingEnd BETWEEN m1.meetingStart AND m1.meetingEnd AND m2.meetingID &lt;&gt; m1.meetingID ) mo, t_meeting m1, t_meeting m2 WHERE m1.meetingID = mid1 AND m2.meetingID = mid2 </code></pre> <p>, which is more complex but will most probably run a little bit faster.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload