【问题标题】:What is the best way to go about grouping rows by the same timestamp?按相同时间戳对行进行分组的最佳方法是什么?
【发布时间】:2010-06-15 17:50:33
【问题描述】:

由于上次没有得到正确答案,我将重新写一下。

我想创建一个页面,显示来自“tbl_fixtures”的所有灯具。

id - compname - home_user - home_team - away_user - away_team - 日期

这就是表设置。 日期列是时间戳。 我想根据日期列显示所有固定装置。

将有 10 个具有相同时间戳的灯具块。 我想这样表现出来……

夹具 1 -(可读格式的时间戳) 然后所有 10 台灯具....

夹具 2 -(时间戳) 然后是 10 台灯具...

等等等等

直到所有灯具都按其时间戳分组。

我该怎么做呢?

【问题讨论】:

  • 我不确定您的时间戳的格式,但您为什么不能在您的选择语句中包含“ORDER BY date”?
  • 我可以,但我想用不同的日期分隔行?
  • 所以你想按周“分类”?
  • @Luke:对于您要完成的工作有些困惑。也许是更多细节,或者是一些表数据和所需的记录集。
  • @Luke 你有没有找到解决方案。我知道你的意思,因为这正是我想要做的。

标签: php mysql


【解决方案1】:

如果您想按周“分组”它们,您可以使用WEEK() 函数。最好的办法是按时间戳对行进行排序,并在周发生变化时打印新的周标题:

$result = $mysql_query("SELECT WEEK(timestamp) as week, * FROM myTable ORDER BY timestamp");

$current_week = null;
while ($row = mysql_fetch_assoc($result)) {
  if ($row["week"] != $current_week) {
    $current_week = $row["week"];
    echo 'Week ' . $current_week .': ';
  }
  echo $row["timestamp"];
  // echo other fields
}

【讨论】:

  • 是的,我希望它们都按时间戳的顺序排列,但是当时间戳改变时,我想要一个新的标题/标题。
  • 你的意思是当改变?
【解决方案2】:

我会尝试读懂您的想法并建议使用 DATE_FORMAT:

SELECT DATE_FORMAT(`add_dt`, '%u') AS `d`, `field1`, `field2`
FROM `table1`
ORDER BY `d`

其中 %u 是周数 (ref)。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 2015-10-07
    • 1970-01-01
    • 2018-10-06
    • 2020-11-29
    • 2011-04-22
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多