2016-08-22 45 views
-1

我使用php,mysql和html一起显示表。 但我想按时间戳排序项目,并将具有相同ID的项目组合在一起。 例子:SQL列出所有行首先查找具有最旧时间戳的行和具有相同id的组行

Unsorted table: 

    timestamp  id  name  description 

    14:02   2  Hans  Is very nice! 
    12:01   3  Jürgen  Is very bad! 
    10:03   2  Hans  Again good. 
    11:08   6  Anna  BAD! 
    06:09   11  Peter  Good. 

Right sorted table: 

timestamp  id  name  description 

06:09   11  Peter  Good. 
10:03   2  Hans  Again good. 
14:02   2  Hans  Is very nice! 
11:08   6  Anna  BAD! 
12:01   3  Jürgen  Is very bad! 

Bad sorted table: 

timestamp  id  name  description 

06:09   11  Peter  Good. 
10:03   2  Hans  Again good. 
11:08   6  Anna  BAD! 
12:01   3  Jürgen  Is very bad! 
14:02   2  Hans  Is very nice! 

我有以下但不工作:

SELECT * FROM fehlerfilm ORDER BY timestamp, imdb_id 

我得到的错误排序表。

我想在最后的所有项目! 过程:

  • 选择所有并寻找项目最旧的时间戳有一个 项目具有相同的ID? - >如果是将其分组到最老的项目旁边(等于哪个TIMESTAMP)。 - >如果 没有认准第二古老的项目,并再次过程
+1

您需要的是不可能的。根据您的情况,您可以先按时间戳排序,如果有关系,则按ID排序。你不能同时做两个。 –

+0

这似乎是一个浪费的重复。我认为另一个应该被标记为重复的。 – CodyMR

回答

-2

你可以用以下这将通过ID和顺序按时间戳降序排列组,如果你首先想要最新的数据查询。

SELECT * FROM按id ORDER BY时间戳降序

+0

这不起作用,因为当您执行GROUP BY时,只能选择GROUP BY中的任何内容。你的陈述会出现错误。 – CodyMR

1

派生表具有相关的子查询,其返回每个imdb_id最低时间戳fehlerfilm基。按该栏排序:

SELECT timestamp, id, name, description 
from 
(
    select f1.*, (select min(timestamp) from fehlerfilm f2 
        where f2.imdb_id = f1.imdb_id) as mintime 
    from fehlerfilm f1 
) 
ORDER BY mintime, imdb_id, timestamp 
+0

我使用foreach循环创建表!:为foreach()提供的无效参数 – SebastianHannes

相关问题