2016-08-22 23 views
-2

私は、テーブルを表示するためにphp、mysql、およびhtmlを一緒に使用します。 しかし、アイテムをタイムスタンプでソートし、同じIDを持つアイテムをまとめてグループ化したいと思います。 例:SQLタイムスタンプでグループ化し、IDでグループ化

ソートされていないテーブル:

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. 

右表をソート:

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! 

悪いソートテーブル:

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! 

私はINNERがなければならないと思うのJOIN:最初に見つけます最も古いタイムスタンプを持つ項目。同じIDを持つ別のアイテムが存在するかどうかを調べます。存在する場合は、最も古いタイムスタンプのアイテムの隣に配置する必要があります。

+0

あなたの現在のクエリは次のように何を求めていますか? –

+0

私はSELECT *を使用したいと思っています。... – SebastianHannes

+0

それ以上のものが必要です。あなたが言っていることは、あなたは現在、何の質問もないということです、それは正しいのですか?何を試しましたか?まさに、あなたのために働いていないのですか? –

答えて

-1

これを試してみてください。

サブクエリは、同じID列の値に対して同じであろうNewTimeStampを持つあなた一時列を返します。

SELECT 
    X.timestamp, 
    X.Id, 
    X.name, 
    X.description 
FROM 
(
    SELECT TMain.timestamp,TMain.id,TMain.name,TMain.description 
    (
     CASE WHEN ((SELECT COUNT(1) FROM @tblTest T WHERE T.Id=TMain.Id))>0 
     THEN (SELECT TOP(1) timestamp FROM @tblTest T WHERE T.Id=TMain.Id ORDER BY timestamp) 
     ELSE timestamp END 
    ) AS NewTimeStamp FROM @tblTest TMain 
)X 
ORDER BY X.NewTimeStamp,X.timestamp 
+0

投票の理由を知ることはできますか? –

+0

これは間違っているためです。セカンダリソート列は、プライマリソート列に同じ値が複数存在する場合にのみ使用されます。 –

+0

はい、これは間違っています!私はそれをテストしている! – SebastianHannes

1

あなたは両方のMySQL PHPを使用しています答えに興味があるなら、これはあなたが望むものを達成します。

MySQLの

SELECT `timestamp`, `id`, `name`, `description` FROM TableName ORDER BY `timestamp` DESC; 

PHP

// execute your query and put the results into $dateSortedArray 
// I am assuming you know how to do this 

$outterArray = array(); 

// iterate through each row of the $dateSortedArray 
foreach($dateSortedArray as $row) 
{ 
    // this is where we're doing the 'sub ordering' part 
    // I'm pre-pending 'id_' in the index so that it is string-based 
    if(!isset($outterArray["id_".$row["id"]])) 
    { 
     // if we do not see this id in our result array yet, 
     // add a new array with this row in it 
     $outterArray["id_".$row["id"]] = array($row); 

    } 
    else 
    { 
     // if we have already see this id before, 
     // add the current row to the array with this id-based index 
     $outterArray["id_".$row["id"]][] = $row; 
    } 

} 


// iterate through our result array 
foreach($outterArray as $innerArray) 
{ 
    foreach($innerArray as $innerRow) 
    { 
     // simply dump out each line, comma-seperated 
     echo implode(",", $innerRow) . "\r\n"; 
    } 
} 

Working Example

+0

で作業することができます:_と彼は_idを望んでいません純粋に努力と汚れのため – RiggsFolly

+0

@ RiggsFollyありがとう:) –