gpt4 book ai didi

php - 显示单个日期,除非它们是连续日期

转载 作者:行者123 更新时间:2023-11-30 00:35:52 24 4
gpt4 key购买 nike

我正在开发一个显示事件列表的应用程序。最初,该应用程序使用 Drupal 并将事件显示为“范围”。因此,如果 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

当前事件列表有一个主事件表

EventID (int)
Event (varchar)
Active (tinyint)

以及事件日期表

EventDateID(int)
EventDate
EventTime
EventID

这是我的 SQL

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

我对这两个表进行内部连接以生成事件列表。在该输出循环期间,我再次查询以获取各个 EventDates 并生成范围

SELECT MAX(EventDate) AS maxDate, MIN(EventDate) AS minDate
FROM tblEventDates
WHERE EventID = '$EventID'

我只是不确定确定是否要显示范围的这一部分或单独日期的最佳方法是什么。

有什么建议吗?

最佳答案

我不完全理解为什么您不只是在原始查询中获取范围:

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

关于php - 显示单个日期,除非它们是连续日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22187018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com