Mysql 可以通过两个时间戳进行排序,并将同一行显示两次

Mysql 可以通过两个时间戳进行排序,并将同一行显示两次,mysql,timetable,time-tracking,Mysql,Timetable,Time Tracking,我正在考虑创建一个时间表解决方案。 我有一个任务表,看起来像 区域1项目1开始时间结束时间 区域1项目1开始时间结束时间 我希望创建一个显示,在这里我可以查看接下来发生的事情,无论是endTime还是startTime i、 e 纽卡斯尔16:45 18:45 纽卡斯尔2 17:45 19:45 将输出 纽卡斯尔16:45 纽卡斯尔17:45 纽卡斯尔18:45 纽卡斯尔19:45 更重要的是,我想检测时间是开始时间还是结束时间,我必须为每个活动输入两行(时间、区域、项目、开始|结束)。我可以创

我正在考虑创建一个时间表解决方案。 我有一个任务表,看起来像

区域1项目1开始时间结束时间
区域1项目1开始时间结束时间

我希望创建一个显示,在这里我可以查看接下来发生的事情,无论是endTime还是startTime

i、 e

纽卡斯尔16:45 18:45
纽卡斯尔2 17:45 19:45

将输出

纽卡斯尔16:45
纽卡斯尔17:45
纽卡斯尔18:45
纽卡斯尔19:45


更重要的是,我想检测时间是开始时间还是结束时间,我必须为每个活动输入两行(时间、区域、项目、开始|结束)。我可以创建两行的接口。我只是想知道是否有更好的解决办法

您可以有一个带有

  • 身份证
  • 时间
  • 类型(开始或结束)
  • 事件详细信息id
以及带有

  • 身份证
  • 描述
然后,您可以执行
从事件左侧选择时间、类型、描述加入event.details\u id=event\u details.id按时间排序

这将为您提供所需的输出


如果您想在每一行中获得开始和结束时间的输出,那么您需要使用现有架构执行类似以下操作:
选择event\u details.description,min(time)作为开始,max(time)作为结束,从event left加入event\u details on event.details\u id=event\u details.id按事件\u details分组,此查询应适用于以下情况:

SELECT * FROM
((SELECT Area, Item, startTime AS eventTime FROM tasks)
UNION
(SELECT Area, Item, endTime FROM tasks)) AS t
ORDER BY eventTime

基本上,您选择的是所有开始时间,然后是结束时间,然后对它们进行排序。

完全忘记了联合。非常感谢。