データを含む MySQL テーブルがあり、実施された特定のテストの最新のエントリを選択したいと考えています。
table: research
columns: id (int), projectid (int), test (varchar),
when (datetime), result (longtext)
行の例:
1, 6, "Test1", 01-01-2013 12:15, "AAAAA"
2, 6, "Test1", 01-01-2013 13:15, "BBBBB"
3, 6, "Test2", 01-01-2013 16:00, "CCCCC"
4, 6, "Test2", 01-01-2013 16:15, "DDDDD"
5, 6, "Test2", 01-01-2013 16:30, "EEEEE"
「テスト 1」の最新の結果が必要な場合は、..
SELECT *
FROM research
WHERE projectid=6 AND test='Test1'
ORDER BY when DESC limit 1
しかし、1 つのプロジェクトの各テストの最新の結果を 1 つのクエリで取得するにはどうすればよいでしょうか? 私は試した:
SELECT research.*
FROM research INNER JOIN (SELECT MAX(id) AS id
FROM research
WHERE projectid=".$ProjectId."
GROUP BY test) ids
ON research.id = ids.id
WHERE research.projectid=".$ProjectId
しかし、テストの最新の結果は得られず、最も古い結果が得られます..