我有下表:
activity (name, description, dateBegin, dateEnd)
我需要找到彼此不重叠的所有活动(它们的日期不会发生碰撞)。
我有以下条件来查找重叠的活动:
AND (0
OR (`activity1`.`dateBegin` <= `activity2`.`dateBegin` AND `activity2`.`dateBegin` < `activity1`.`dateEnd`)
OR (`activity1`.`dateBegin` < `activity2`.`dateEnd` AND `activity2`.`dateEnd` <= `activity1`.`dateEnd`)
OR (`activity2`.`dateBegin` <= `activity1`.`dateBegin` AND `activity1`.`dateBegin` < `activity2`.`dateEnd`)
OR (`activity2`.`dateBegin` < `activity1`.`dateEnd` AND `activity1`.`dateEnd` <= `activity2`.`dateEnd`)
)
如何两次加入同一个表并计算匹配而不重复条目? PS:我有另一个名为userActivity
的表格,其中有一个activityId
和userId
列,用于匹配我在查询中LEFT JOIN
所需的用户列。
有什么建议吗?
感谢。