2016-06-20 33 views
1

我有一個表格標題,用於存儲有關在某些年份取得某些標題的用戶的信息。mysql查找用戶連續3年獲得如何獲得標題

The table structure of table "title"

現在我需要找到誰已經achived連續3年某類標題,但無法弄清楚如何的所有用戶。示例我想向所有2014,2015,2016三年內獲得「2」標題的用戶展示。這裏是我的嘗試:

SELECT t.id, t.staff_id, t.year, t.title_id 
FROM title AS t 
INNER JOIN 
(
    SELECT staff_id 
    FROM title 
    WHERE year IN (2014,2015,2016) 
    GROUP BY staff_id 
    HAVING COUNT(*) = 3 
) AS d 
    ON d.staff_id = t.staff_id 
WHERE title_id = 2 

從上面的樣本數據,我希望看到staff_id 119和300,但是我還有其他staff_id及以上年象下面這樣:

Query result

有人請幫助

回答

0

您遇到的問題是由於該問題導致的,儘管子查詢確實返回了在2014年,2015年和2016年活躍的那些員工的staff_id值,但並未選擇在期間擁有該職位的員工這些年。我想你需要修改你的子查詢到以下幾點:

SELECT staff_id 
FROM title 
WHERE year IN (2014, 2015, 2016) AND title_id = 2 
GROUP BY staff_id 
HAVING COUNT(*) = 3 

而且我不認爲你需要自行加入,因爲這將不再添加任何新的信息。您已經知道對應於結果集中的記錄的yeartitle_id

+0

工作無需自加入。非常感謝 –

+0

只是。再次感謝 –