2016-04-15 11 views
2

メッセージごとにユニークなIDを持つメッセージングシステムを作成し、関連するスレッドを結びつける/リンクするカテゴリを作成しました。私はカテゴリを配列に格納しており、このmysqlクエリで各メッセージを表示できます。SELECT WHEREグループID IN配列ORDER BYおよびグループ

$getid = $link->prepare("SELECT * FROM `table` WHERE 
               category IN ('$array') 
               ORDER BY id DESC");     
$getid->execute(); 
while($msg=$getid->fetch()) { 

echo "<br />".$msg['id']; 
} 

上記は、配列にリストされているカテゴリID内のすべてのメッセージを正常に出力します。私は最も最近のリストを表示しようとしています。つまり、最大のIDを持つ各カテゴリのメッセージです。

カテゴリで失敗したグループを試しましたが、間違った結果が出ました。

$getid = $link->prepare("SELECT * FROM `table` WHERE 
               category IN ('$array') 
               GROUP BY category 
               ORDER BY id DESC");     
$getid->execute(); 
while($msg=$getid->fetch()) { 

echo "<br />".$msg['id']; 
} 

も、私はここに手の込んだには多すぎる、複数のバリエーションを試してみましたが、MAX(ID)

$getid = $link->prepare("SELECT MAX(id) FROM `table` WHERE 
               category IN ('$array') 
               ORDER BY id DESC");     
$getid->execute(); 
while($msg=$getid->fetch()) { 

echo "<br />".$msg['id']; 
} 

を使用して失敗しました。私は最新のメッセージ(last id)のみを特定のカテゴリに表示しようとしています。

+0

あなたが最大のIDを意味するとき、あなたは1つのアイテムまたはそれらの多くを意味しますか?最近の何ですか?分、時間、日?私は、日付の使用を検討します。だから、あなたはどこからでもCat IN $ dataとNOW() - 5days> message_date_fieldのSELECT * FROMテーブルを作成できます。この構文はincorectですが、ideanはそこにあります。 – MadeInDreams

答えて

2

このようなサブクエリがあると思います。

select * from `table` T where T.category in ('$array') and 
    T.id = (select max(id) from `table` where category = T.category)