2016-08-22 6 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 *タイムスタンプDESC

+0

これは動作しません。なぜなら、GROUP BYを実行すると、GROUP BYにあるものだけをSELECTできるからです。あなたの声明は誤りを伴います。 – CodyMR

1

派生テーブルは、各imdb_idの最小タイムスタンプを返す相関サブクエリを有するBY 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

関連する問題