可以按两个时间戳排序并显示两次相同的行

时间:2010-04-15 22:40:07

标签: mysql timetable time-tracking

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

的任务表
  

区域1项目1 startTime结束时间
  区域1 item1 startTime endTime

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

  

纽卡斯尔卷轴16:45 18:45
  纽卡斯尔reel2 17:45 19:45

会输出

  

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

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

2 个答案:

答案 0 :(得分:0)

你可以拥有一个带

的事件表
  • ID
  • 时间
  • 类型(开始或结束)
  • 活动详情ID

以及带有

的事件详细信息表
  • id
  • 描述

然后,您可以执行select time, type, description from event left join event_details on event.details_id = event_details.id order by time

这应该可以提供所需的输出。

如果您想在每行中获得包含开始和结束时间的输出,那么您需要执行select event_details.description, min(time) as start, max(time) as end from event left join event_details on event.details_id = event_details.id group by event_details.description之类的操作。

答案 1 :(得分:0)

使用现有架构,此查询应该有效:

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

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