首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示单个日期,除非它们是连续的日期

显示单个日期,除非它们是连续的日期
EN

Stack Overflow用户
提问于 2014-03-05 10:00:13
回答 1查看 41关注 0票数 0

我正在开发一个显示事件列表的应用程序。最初,应用程序使用的是Drupal,并将事件显示为“range”。因此,如果在3/4、3/6、3/8有一个事件,它会将日期显示为3/4 - 3/8。

我最近将这个应用程序移植到了一个自定义解决方案中,因为事件已经变得更加高级。客户端刚刚请求此行为令人困惑。他希望它是3/4,3/6,3/8,但我们也需要处理连续的日期。

因此,如果我们有事件3/4、3/6、3/8和3/10、3/11、3/12 -我们需要看到以下3/4、3/6、3/8、3/10-3/12

目前,事件列表有一个主事件表

代码语言:javascript
复制
EventID (int)
Event (varchar)
Active (tinyint)

和事件日期表

代码语言:javascript
复制
EventDateID(int)
EventDate
EventTime
EventID

下面是我的SQL语句

代码语言:javascript
复制
SELECT *, MIN(tblEventDates.EventDate) AS minDate
FROM tblEvents INNER JOIN tblEventDates
ON tblEvents.EventID = tblEventDates.EventID
WHERE tblEvents.Active = 1
AND tblEventDates.EventDate >= CURDATE()
GROUP BY tblEvents.EventID
ORDER By minDate, EventTime

我内部JOINing这两个表,以产生事件的清单。在输出循环期间,我再次查询,获取单个EventDates并生成范围

代码语言:javascript
复制
SELECT MAX(EventDate) AS maxDate, MIN(EventDate) AS minDate
FROM tblEventDates
WHERE EventID = '$EventID'

我只是不确定最好的方法是确定是显示范围的这一部分还是显示孤立的日期。

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-03-05 10:42:09

我不能完全理解为什么你没有在你的原始查询中得到范围:

代码语言:javascript
复制
SELECT *, MIN(tblEventDates.EventDate) AS minDate, MAX(tblEventDates.EventDate) AS maxDate
FROM tblEvents INNER JOI
     tblEventDates
     ON tblEvents.EventID = tblEventDates.EventID
WHERE tblEvents.Active = 1 AND
      tblEventDates.EventDate >= CURDATE()
GROUP BY tblEvents.EventID
ORDER By minDate, EventTime;

如果这样做,那么就不需要额外的查询来获得maxDate

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22187018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档