你好我对mysql查询(DQL)有疑问
表:
id| start | end | day
-------------------------------
1 | 10:00 | 11:00 | 03-05-2013
2 | 11:00 | 12:00 | 03-05-2013
3 | 10:30 | 12:00 | 03-05-2013
4 | 13:00 | 14:00 | 03-05-2013
5 | 14:00 | 15:00 | 03-05-2013
因此我想得到(列:id,start,end)只有在start和end之间具有相同部分的行。因此,我希望得到:
id| start | end
------------------
1 | 10:00 | 11:00
2 | 11:00 | 12:00
3 | 10:30 | 12:00
因为第1行和第3行的时间介于:10:30和11之间,而第2,3行的时间介于11:00到12:00之间
我希望很清楚我想要得到什么作为输出。 很高兴能在DQL语法中为doctrine获得答案。
答案 0 :(得分:0)
您需要自行加入表格并查找对之间的冲突
SELECT
t1.id,
t1.start,
t1.end
FROM table_name t1
JOIN table_name t2
WHERE
t1.start < t2.end AND
t2.start < t1.end AND
t1.id <> t2.id AND
t1.date = t2.date
您可以使用SELECT DISTINCT或GROUP BY修剪输出中的重复项。