我正在努力构建一个查询,该查询会按ID从表中获取一些行,然后从同一个表中连接start_date
和end_date
在父start_date
之间的行。考虑像
事件
| id | event_type_id | start_date | end_date |
| 1 | 1 | 10 | 100 |
| 2 | 2 | 5 | 20 |
| 3 | 2 | 8 | 50 |
event_type_id
= 1的事件与正常事件类似,而= 2的事件是周期事件。我想构建查询以便我获得所有正常事件,但同时start_date
和end_date
处于正常事件start_date
之间的句点事件。因此,考虑上面的示例,我希望获得id
为1的事件,并将event_type_id
为2的事件与start_date
和end_date
之间的事件加在10之间。请注意即使只有1 event_type_id
= 1的记录会有更多的记录,我想在一个查询中获取所有这些记录。我知道单个记录很容易做到,但是我想像整棵树那样取出,所以我不会以n + 1结束。它是否可能或者我应该考虑不同的方法?
答案 0 :(得分:0)
SELECT
e1.*,
e2.*
FROM
events e1 LEFT JOIN events e2
ON
e1.start_date BETWEEN e2.start_date AND e2.end_date
AND
e2.event_type_id=2
WHERE
e1.event_type_id=1;