2013-04-29 80 views
2

我在測試輸出數據庫中有2個表,我們將需求連接到已執行的測試用例。這些表如下所示:獲取由SSS運行的最後一個需求編號,包括未運行

mysql> select * from SSS_Req; 
+-----+------+ 
| ID | Req | 
+-----+------+ 
| 2 | 1122 | 
| 3 | 1208 | 
| 4 | 2525 | 
+-----+------+ 
3 rows in set (0.00 sec) 

mysql> select * from log_item; 
+----+------+---------+-------------------------+ 
| ID | Req | Status | DateTime    | 
+----+------+---------+-------------------------+ 
| 32 | 2525 | SUCCESS | 2012-10-09 18:24:54.375 | 
| 33 | 1122 | FAIL | 2012-10-09 18:24:54.390 | 
| 65 | 2525 | SUCCESS | 2012-10-09 18:44:40.625 | 
+----+------+---------+-------------------------+ 
3 rows in set (0.00 sec) 

我想用自去年執行(降序)在時間排序的所有要求,包括要求甚至不是執行表(優先列入名單)。這是爲了幫助我們得到一個沒有經過測試的要求清單,B沒有經過很長一段時間的測試。

所以給出的信息上面我想獲得類似這樣的輸出:

+------+-------------------------+ 
| SSS | DateTime    | 
+------+-------------------------+ 
| 1208 | NULL     | 
| 1122 | 2012-10-09 18:24:54.390 | 
| 2525 | 2012-10-09 18:44:40.625 | 
+------+-------------------------+ 

問候 安德烈亞斯

回答

2
SELECT a.Req SSS, 
     MAX(b.datetime) DateTime 
FROM SSS_req a 
     LEFT JOIN Log_Item b 
      ON a.req = b.req 
GROUP BY a.Req 

爲了進一步增加更多關於連接的知識,請親臨林中ķ如下:

+0

謝謝你,我曾經在末尾加上一個ORDER BY日期時間完美。 – Andreas 2013-04-29 13:50:59

+0

@Andreas那是什麼在小提琴':)' – 2013-04-29 13:51:43

1

你需要一個left outer join把所有的請求數。然後group by拿到最後一個日誌時間:

select r.req as SSS, MAX(datetime) 
from sss_req r left outer join 
    log_item li 
    on r.req = li.req 
group by r.req