2016-03-22 7 views
-3

どのように最新の成功したテストをプログラムごとに入手できますか?MySQL - 最新の成功テストを表示

+----+---------+----------------+-------+-----------+---------+ 
| ID | Test | Program  | Build | Result | Tester | 
+----+---------+----------------+-------+-----------+---------+ 
| 1 |  1 | Mag. & Speech | 1825 | PASSED | Dale | 
| 2 |  2 | Scr. Reader | 1820 | PASSED | Aadarsh | 
| 3 |  2 | Scr. Reader | 1821 | PASSED | Tony | 
| 4 |  2 | Scr. Reader | 1824 | PASSED | Tony | 
| 5 |  2 | Mag. & Speech | 1820 | PASSED | Colin | 
| 6 |  2 | Mag. & Speech | 1821 | FAILED | Dale | 
| 7 |  2 | Mag. & Speech | 1822 | OF CONCERN| Tony | 
| 8 |  2 | Mag.   | 1820 | PASSED | Steven | 
| 9 |  3 | Scr. Reader | 1820 | NOT TESTED| Aadarsh | 
+----+---------+----------------+-------+-----------+---------+ 

:最新のものが最高ビルド番号を持っており、成功したが、すべてのとの懸念を渡され私のテーブルはこのようになります

は(私は元からいくつかの列を除きます)結果私は行(ID)1,4,7,8を取得したいと思います。ご覧のように、同じテストが複数あるプログラムはありません。


編集: は、テーブルにいくつか不足している情報を追加しました。 悲しいことに私はもう質問をしませんでしたが、私は試しましたが、ちょうどではあまり得られませんでした。ご注文です。

+0

適切な名前に(2ヶ所で)TABLE_NAMEを交換してくださいはい、私は、ビルドで注文すべて成功しテストをフィルタリングして、テストおよびプログラムによってグループ化してみました。 – tuhang

答えて

2

このクエリでは、残念ながら、それは制限して、グループに起因する複雑なビットがあるトリック

SELECT  t3.* 
    FROM (
     SELECT  t1.ID, 
        MAX(t1.Build) as Build 
      FROM table_name t1 
      WHERE LOWER(t1.Result) NOT IN('n/a', 'not completed', 'not tested') 
     GROUP BY t1.Test, t1.Program 
     ) t2 
INNER JOIN table_name t3 
     ON t3.ID = t2.ID 
     AND t3.Build = t2.Build; 

を行う必要があります。

+0

はい、あなたは正しいです。必要のないサブクエリを1つ削除しました。 – piotrgajow

+0

残念ながら、私はまだ未完了のテストを受けます。 – tuhang

+0

どういう意味ですか?あなたはどんな結果を得ていますか? – piotrgajow

関連する問題