0

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

区域 1 item 1 startTime endTime
区域 1 item1 startTime endTime

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

IE

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

会输出

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

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

4

2 回答 2

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.

于 2010-04-15T23:23:49.033 回答
0

使用您现有的架构,此查询应该可以工作:

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

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

于 2010-04-15T23:36:11.273 回答