2016-08-22 65 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

相關問題