【问题标题】:ordering different database rows into groups based on weeks [closed]根据周将不同的数据库行分组[关闭]
【发布时间】:2014-05-27 22:37:26
【问题描述】:

我试图用谷歌搜索这个,但我只能找到我已经知道的如何按字母顺序排序。基本上我想对我的不同行进行排序并根据它们的日期值打印出来。

这是打印比赛时间表。我想按周组织它并将其打印出来,以便将所有第一周的游戏打印在一起,并在不同的 div 中打印第二周的游戏等...

我不想在某个日期使用WHERE() 子句,因为我有多个联赛有多个开始日期,而且日期肯定不一样。我觉得搜索每个可能的日期会非常缓慢。

任何帮助都会很棒。

【问题讨论】:

  • 您需要向我们展示您正在尝试的查询。
  • 不能使用WHERE,然后试试GROUP BY和/或ORDER BY
  • 按日期排序,然后按名称
  • 在此论坛搜索:如何在 MySQL 中按周分组? stackoverflow.com/questions/1736010/…
  • @Fred-ii- , GROUP BY?真的吗?在这个问题中,我没有看到对聚合的任何要求。

标签: php mysql sql sorting time


【解决方案1】:

这在概念上很简单,虽然语法有点混乱。

您需要一个将任何DATE 转换为它包含的一周的第一天的表达式,然后您需要ORDER BY 该表达式。

考虑到你的星期从星期日开始,这是表达式。

FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7))

因此,大致像这样的查询将为您解决问题。

SELECT FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7)) AS week_begin,
       *
  FROM competition
 ORDER BY FROM_DAYS(TO_DAYS(event_date) -MOD(TO_DAYS(event_date) -1, 7)),
       team, whatever

这几乎没有被调试;我不知道你的列名或表名。

这里写得比较详细。 http://www.plumislandmedia.net/mysql/sql-reporting-time-intervals/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    相关资源
    最近更新 更多